JavaMail: встроенное изображение в электронной почте - PullRequest
0 голосов
/ 23 мая 2018

Я хочу прикрепить встроенное изображение в теле письма, для этого я использую следующий метод, все в порядке, но вложение с «noname» прикреплено к электронному письму, я не хочу никакого вложения в электронное письмо, я хочу, чтобы отображалось толькоизображение в теле письма, ниже приведены мой код и снимок письма

public void forgotPasswordMail(String email,String token)
        {
              String to = email;
              Properties props = new Properties();
              props.put("mail.smtp.auth", "true");
              props.put("mail.smtp.starttls.enable", "true");
              props.put("mail.smtp.host", host);
              props.put("mail.smtp.port", "587");
              Session session = Session.getInstance(props,
                 new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                       return new PasswordAuthentication(username, password);
               }
                 });
              try {
                  MimeMessage message = new MimeMessage(session);
                  message.setSubject("HTML  mail with images");
                  message.setFrom(new InternetAddress("me@sender.com"));
                  message.addRecipient(Message.RecipientType.TO,
                       new InternetAddress("you@receiver.com"));

                  // Mail Body
                  MimeMultipart multipart = new MimeMultipart("related");
                  BodyPart textPart = new MimeBodyPart();
                  String htmlText ="<img src=\"cid:image\"> " + 
                  "<html><head><style>h1 {background-color: #FFF100;padding: 15px; text-indent: 40px;} " +
                          "p {text-indent: 60px;}</style></head><body><h1>Forgot password request</h1> " +
                          "<p> Please click on the following link to verify your account </p>" + 
                          "<p>" + frontendUrl+"resetForgottonPassword/"+token+"</p></div></body></html>";
                  textPart.setContent(htmlText, "text/html");

                  multipart.addBodyPart(textPart);
                  BodyPart imagePart = new MimeBodyPart();
                  DataSource fds = new FileDataSource
                    ("C:/Users/INTERN I/Desktop/logo2.png");
                  imagePart.setDataHandler(new DataHandler(fds));
                  imagePart.setHeader("Content-ID","<image>");
                  imagePart.setDisposition(MimeBodyPart.INLINE);
                  multipart.addBodyPart(imagePart);
                  message.setContent(multipart);
                  message.setSubject("Reset Password");
                  message.setRecipients(Message.RecipientType.TO,
                           InternetAddress.parse(to));
                  Transport.send(message);
              } catch (MessagingException e) {
                 throw new RuntimeException(e);
              }
           }

SnapShot of Email

1 Ответ

0 голосов
/ 24 мая 2018

Проблема заключалась в том, что имя и расширение файла не установлены, поэтому программа чтения почты устанавливает его как «noname» после добавления этой строки, и моя проблема решена:)

messageBodyPart.setFileName("logo.png"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...