java - 如何将邮件中的 base64 图像附加到 JavaMail 和 MimeMessageHelper?
问题描述
我正在尝试发送带有图像附件的 Mime 电子邮件,但我知道该怎么做。我尝试了在线解决方案,但没有奏效。我将得到编码的图像,需要解码并附加在邮件中。这是我的代码
public class SendEmail{
public static void main( String[] args ) throws javax.mail.MessagingException, IOException
{
String value= "Wyk+HjAxHTAyNzg3MDUdODQwHTAxOR0wMDAwMDAwMDAwMDAwMDAd" +
"RkRFQh0wMDAwMDAwHTA0MB0dMS8xHTUwLjVMQh1OHVcgMzR0aCBTdHJlZXQdQ" +
"XVzdGluHVRYHSAeMDYdMTBaR0QwMDQdMTFaUmVjaXBpZW50IENvbXBhbnkgTmFt" +
"ZR0xMlo5MDEyNjM3OTA2HTE0WioqVEVTVCBMQUJFTCAtIERPIE5PVCBTSElQKio" +
"dMjNaTh0yMlocWR0yMFogHDAdMjZaNjEzMxwdHgQ=";
JavaMailSender mailSender = getJavaMailSender();
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper;
Map<String,Object> map = new HashMap<>();
try{
helper = new MimeMessageHelper(mimeMessage, true, "utf-8");
String sendTo = "abc@gmail.com";
String htmlMsg = "<h1> hello </h1>";
mimeMessage.setContent(htmlMsg, "text/html");
// add attachment encode in base64
byte[] decodedImg Base64.decodeBase64(value);
// dont know how to attache the decode img
helper.setTo(sendTo);
helper.setSubject("Subject");
mailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
解决方案
尝试:
helper.addAttachment("MyImageName.jpg", new ByteArrayResource(value.getBytes()));
但请阅读:从代码看来,您已经对图像进行了编码。“值”似乎是 Base64 格式。你不应该处理它,因为它是为你完成的。
// you can attach a file directly to the helper
FileSystemResource file = new FileSystemResource(new File("image_file.jpg"));
helper.addAttachment("MyImageName.jpg", file);
如果附件不是磁盘上的文件,您可以使用以下命令:
helper.addAttachment("MyImageName.jpg", new ByteArrayResource(IOUtils.toByteArray(attachment)));
如果这是一个输入流或这个:
helper.addAttachment("MyImageName.jpg", new ByteArrayResource(value.getBytes()));
推荐阅读
- cypress - 从固定装置动态地将字符串传递给“它”?
- django - 如何使铬无头等到 reactjs 加载了来自 fetch 调用的数据
- rest - 应用架构是 3 层还是 4 层?
- python - 表单在页面刷新时重新提交
- python - 从卷积核中得到卷积矩阵
- javascript - 我得到了 Expected SCRIPT1005: '(' with JavaScript on Edge,Chrome 运行良好,为什么?
- automated-tests - 使用 Cucumber BDD 的微服务集成测试套件
- amazon-web-services - AWS Device Farm - 缺少或未处理的资源
- cassandra - 在 JBOD 或 RAID 上使用 LVM 是可能的还是不推荐的?
- python - 关于 sympy.printing.mathml 中的括号错误