2017-09-06 3 views
3

utilisant un ressort 4.0.8Impossible d'envoyer l'image par courrier électronique avec Spring javamail

Voici mon code

@Value("classpath:logo.png") 
private Resource logoImage; 

...

final MimeMessagePreparator preparator = new MimeMessagePreparator() { 
      public void prepare(MimeMessage mimeMessage) throws Exception { 
       final MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true,"UTF-8"); 
       message.setTo(toEmail); 
       message.setSubject("subject"); 
       message.setFrom(from); 
       message.setReplyTo(replyTo); 
       message.addInline("logo.png", logoImage); 
       message.setText("<img src=\"cid:logo.png\"></img><div>My logo</div>", true); 
      } 
     }; 
     mailSender.send(preparator); 

Et je reçois e-mail sans image.

Quand je déboguer logoImage.exists() = true.

Ce que je fais mal?

UPD:message.getMimeMessage().writeTo(System.out) Imprimer:

From: [email protected] 
    Reply-To: [email protected] 
    To: [email protected] 
    Message-ID: <[email protected]> 
    Subject: subject 
    MIME-Version: 1.0 
    Content-Type: multipart/mixed; 
    boundary="----=_Part_1_1016272857.1504685465423" 

    ------=_Part_1_1016272857.1504685465423 
    Content-Type: multipart/related; 
    boundary="----=_Part_2_1648931910.1504685465435" 

    ------=_Part_2_1648931910.1504685465435 
    Content-Type: text/html;charset=UTF-8 
    Content-Transfer-Encoding: 7bit 
    Content-Disposition: inline 
    Content-ID: <logo.png> 

<img src="cid:logo.png"></img><div>My logo</div> 
    ------=_Part_2_1648931910.1504685465435-- 

    ------=_Part_1_1016272857.1504685465423-- 

lorsqu'il est ajouté ce faire passer un message, que mon poste a le code pour la plupart alors voici un texte ne me dérange pas :)

+0

n'est-ce pas «null» lors de l'envoi? – DevDio

+0

Si logoImage n'est pas 'null', faites un' message.getMimeMessage(). WriteTo (System.out) 'et publiez le résultat ici dans le cadre de votre question. – Lothar

Répondre

2

Regardez le example. Je pense que vous devriez échanger les méthodes setText et addInline

+0

même chose ..... – kostepanych

+0

@kostepanych Vérifiez si la ressource n'existe pas seulement mais n'est pas vide en produisant 'resource # contentLength' – Lothar

+0

logoImage.contentLength() = 5560 – kostepanych