2015-08-31 4 views
2

Я застрял и не могу понять проблему с отправкой сообщений электронной почты с вложениями.Отправка электронных писем с прикрепленными файлами - пустые multipart

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

Failed messages: javax.mail.MessagingException: IOException while sending message;nested exception is: 
java.io.IOException: javax.mail.MessagingException: Empty multipart: multipart/related; 
boundary="----=_Part_1_733213598.1441009036818" 

Вот подаст свойство:

[email protected] 
spring.mail.host=smtp.gmail.com 
spring.mail.port=587 
[email protected] 
spring.mail.password=**** 
spring.mail.properties.mail.mime.multipart.allowempty=true 
spring.mail.properties.mail.smtp.auth=true 
spring.mail.properties.mail.smtp.starttls.enable=true 
spring.mail.properties.mail.smtp.ssl.trust=smtp.gmail.com 

и класс, используя его:

@Component 
public class MailSenderService { 

    @Autowired 
    JavaMailSender javaMailSender; 

    @Value("${reports.mailSender.clientEmail}") 
    private String clientEmail; 

    public void sendMessage() { 

     MimeMessage mimeMessage = javaMailSender.createMimeMessage(); 
     FileSystemResource file = new FileSystemResource(new File("c:\\simple.jpg")); 
     try { 
      mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(clientEmail)); 
      mimeMessage.setFrom("[email protected]"); 
      mimeMessage.setText(
        "Hi"); 
      MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); 
      helper.addAttachment(file.getFilename(), file); 
     } catch (MessagingException e) { 
      e.printStackTrace(); 
     } 

     try { 
      this.javaMailSender.send(mimeMessage); 
     } catch (MailException ex) { 
      // simply log it and go on... 
      System.err.println(ex.getMessage()); 
     } 
    } 
} 

Гадания есть проблема с MimeMessageHelper, но не может понять это в одиночку. Кто-нибудь может мне помочь?

+2

Попробуйте использовать 'helper.setText()' вместо 'mimeMessage.setText()' – Jens

ответ

4

Ошибка была вызвана тем, что вы были

пытается отправить почту с пустыми частями тела.

@Jen прав в своем комментарии, вы неправильно устанавливаете текст своей почты.

Существует ошибка в коде, изменить, как показано ниже и попробуйте: -

MimeMessage mimeMessage = javaMailSender.createMimeMessage(); 
      FileSystemResource file = new FileSystemResource(new File("c:\\simple.jpg")); 
      try { 
       MimeMessageHelper helper = new MimeMessageHelper(message, true); 
       helper.addRecipient(Message.RecipientType.TO, new InternetAddress(clientEmail)); 
       helper.setFrom("[email protected]"); 
       helper.setText(
         "Hi"); 
       helper.addAttachment(file.getFilename(), file); 
      } catch (MessagingException e) { 
       e.printStackTrace(); 
      } 

      try { 
       this.javaMailSender.send(mimeMessage); 
      } catch (MailException ex) { 
       // simply log it and go on... 
       System.err.println(ex.getMessage()); 
      } 
+0

Спасибо за помощь, там больше не проблема с исключением - не могли бы вы объяснить мне, почему нет исключения, когда я переместил MimeMessageHelper? Другая проблема заключается в том, что в получении электронной почты нет привязки - не знаю почему. Редактировать: теперь все в порядке - спасибо, ребята за то, что помогли мне - очень цените это :) – Przemek85

+0

Не о том, чтобы переместить MimeMessageHelper, проблема в том, что вы устанавливали контент в неправильном месте. Вы должны установить вещи в помощнике, а не в mimeMessage. –

+0

Проверьте, присутствует ли файл в указанном месте или нет. –

Смежные вопросы