首页 > 解决方案 > 如何将邮件中的 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();
    }



}

标签: javaspringemail

解决方案


尝试:

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()));

推荐阅读