2015-08-31 1 views
2

J'ai bloqué et n'arrive pas à résoudre le problème d'envoi d'e-mails avec des pièces jointes.Envoyer des e-mails avec des pièces jointes - multipart vide

Tout fonctionne bien sans pièces jointes. Alors que j'essaie d'ajouter l'attachement que je reçois exception:

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" 

Voici mes propriétés fichier:

[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 

et classe l'utiliser:

@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()); 
     } 
    } 
} 

Devinant il y a un problème avec MimeMessageHelper, mais ne peut pas le comprendre seul. Quelqu'un peut-il essayer de m'aider?

+2

Essayez d'utiliser 'helper.setText()' au lieu de 'mimeMessage.setText()' – Jens

Répondre

4

L'erreur a été causée parce que vous étiez

essayant d'envoyer le mail avec les parties du corps vide.

@Jen a raison dans son commentaire, vous ne définissez pas correctement le texte de votre courrier.

Il y a erreur dans votre code, changer comme ci-dessous et essayer: -

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

Merci d'aider, il n'est plus un problème d'exception - pourriez-vous m'expliquer pourquoi il n'y a pas d'exception quand j'ai déménagé MimeMessageHelper? Un autre problème est qu'il n'y a pas de pièce jointe dans la réception de courrier électronique - ne sais pas pourquoi. edit: tout va bien maintenant - merci les gars de m'aider - vraiment l'apprécier :) – Przemek85

+0

Il ne s'agit pas de déménager MimeMessageHelper, le problème était que vous étiez en train de régler le contenu au mauvais endroit. Vous devez définir les choses dans helper et non dans le mimeMessage. –

+0

Vérifiez si le fichier est présent à l'emplacement spécifié ou non. –