如何将邮件中的 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();

    }




}



慕的地6264312
浏览 293回答 3
3回答

青春有我

尝试:helper.addAttachment("MyImageName.jpg", new ByteArrayResource(value.getBytes()));但请阅读:从代码来看,您似乎已经对图像进行了编码。“值”似乎是 Base64 格式。你不应该处理它,因为它是为你完成的。// you can attach a file directly to the helperFileSystemResource 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()));

翻过高山走不出你

通过波纹管代码修改代码后,我的问题解决了。value= value.replaceFirst("^data:image/[^;]*;base64,?", "");byte[] bytes = javax.xml.bind.DatatypeConverter.parseBase64Binary(value);helper.addAttachment("MyImageName.jpg", new ByteArrayResource(bytes));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java