Как прикрепить изображение base64 в почте к JavaMail и MimeMessageHelper? - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь отправить электронное письмо 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();
    }



}

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Добавление в качестве ответа уже получено.В качестве альтернативы встраивание изображения работает следующим образом:

htmlMsg += "<img width=\"400\" height=\"400\" "
    + "alt=\"View of the object.\" src=\"data:image/jpeg;base64,"
    + value + "\">";

, если значением являются данные Base64, тип mime image/jpeg ширина и высота должны быть адаптированы.

Некоторые получатели почты могут подавлять форматированный текстписьма в пользу простого текста, но пока <img> не ссылается на www (подтверждая, что вы открыли электронное письмо), версия с расширенным текстом в порядке.

0 голосов
/ 04 октября 2018

Попробуйте:

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()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...