отправка “письма с картинкой” java

99
30 ноября 2019, 10:50

я уверен, что подобные вопросы тут задавались, но что-то не нашёл. нужно отправить письмо с картинкой в теле письма. так же хорошо б чтобы она не попадала в категорию вложения, а просто следовала в содержании, как часть html страницы.

вот код, он работает почти полностью, только саму картинку в полученном письме не отображает.. например в Thunderbird. (ошибок чтения файла при чтении DataSource нет)

собственно вопрос в том, почему не отображается картинка в письме на клиенте? это в коде что-то или почтовый клиент такой, что ему нельзя отправить картинку, чтобы он её отображал?

        try {
            MimeMessage msg = new MimeMessage(session);
            msg.setHeader("Content-Type", "text/html");
            msg.setFrom(new InternetAddress(galkovStates.FROM));
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
            msg.setSubject(MAIL_TITUL, galkovStates.ENCODING);
            // Create your new message part
            BodyPart messageBodyPart = new MimeBodyPart();
            String htmlText = "<a href='https://...'><img src='cid:asd'></a>";
            // Create a related multi-part to combine the parts
            MimeMultipart multipart = new MimeMultipart("related");
            multipart.addBodyPart(messageBodyPart);

            // Create part for the image
            messageBodyPart = new MimeBodyPart();
            // Fetch the image and associate to part
            DataSource fds = new FileDataSource(file);
            messageBodyPart.setDataHandler(new DataHandler(fds));
            messageBodyPart.setHeader("Content-ID","<asd>");
            // Add part to multi-part
            multipart.addBodyPart(messageBodyPart);
            // Associate multi-part with message
            msg.setContent(multipart);
            Transport.send(msg);
        } catch (MessagingException e) {    e.printStackTrace();    }
Answer 1

Вот пример

    MimeMessage message = mailSender.createMimeMessage();
    message.setFrom(from);
    message.setRecipients(Message.RecipientType.TO, to);
    message.setSubject(subject);
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setText(body, true);
    helper.addInline(attachmentName, attachmentInputStream, attachmentContentType);
    mailSender.send(message);

В теле письма добавить <img src="cid:picture.png"/>. picture.png это attachmentName.

mailSender это org.springframework.mail.javamail.JavaMailSender.

READ ALSO
Пример авторизации yandex speechkit java

Пример авторизации yandex speechkit java

Недавно yandex поменял авторизацию speechkit c API ключа на IAM-токенВ документации yandex сказано:

114
Не загружается фото в ImageView

Не загружается фото в ImageView

Делаю приложение для фотоСначала фотографирую, затем вывожу фотографию с карты памяти телефона на экран

128
Запуск react-native android

Запуск react-native android

При запуске выбивает ошибку, как ее решить?

89
В bootstrap 3 col-md не правильно налезает на блоки

В bootstrap 3 col-md не правильно налезает на блоки

Блоки не заполняют свободное пространство, нарисовал на схеме как они располагаются, охото чтобы этих пустых полей не было, не пойму в чем...

150