125 votes

Comment puis-je envoyer un email html via Java?

J'ai réussi à envoyer un courrier électronique dans mon application Web à l'aide de JMS, mais le résultat s'affiche uniquement en texte brut. Je veux que le contenu puisse afficher du HTML. Comment fait-on ça? Voici à peu près ce que j'ai

EDIT: Vous trouverez ci-dessous la solution pour envoyer un courrier électronique HTML à l'aide de JMS java. Jetez un coup d'œil à l'article BalusC pour plus de détails

 Message msg = new MimeMessage(mailSession);
try{
    msg.setSubject("Test Notification");
    msg.setRecipient(Message.RecipientType.TO, new InternetAddress(sentTo, false));
    String message = "<div style=\"color:red;\">BRIDGEYE</div>";
    msg.setContent(message, "text/html; charset=utf-8");
    msg.setSentDate(new Date());
    Transport.send(msg);
}catch(MessagingException me){
    logger.log(Level.SEVERE, "sendEmailNotification: {0}", me.getMessage());
}
 

272voto

BalusC Points 498232

Selon la Javadoc, l' MimeMessage#setText() définit un type mime par défaut de text/plain, tandis que vous avez besoin d' text/html. Plutôt l'utilisation d' MimeMessage#setContent() à la place.

message.setContent(someHtmlMessage, "text/html; charset=utf-8");

Notez que le code HTML ne doit pas contenir l' <html>, <head> ou <body>. Gmail va l'ignorer. Voir aussi le support de CSS dans les clients de messagerie.

19voto

CoolBeans Points 11615

Définir le type de contenu. Regardez cette méthode .

 message.setContent("<h1>Hello</h1>", "text/html");
 

13voto

Knowledge Serve Points 322

Si vous utilisez Google app engine / Java, utilisez les éléments suivants ...

 MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(SENDER_EMAIL_ADDRESS, "Admin"));
msg.addRecipient(Message.RecipientType.TO,
                 new InternetAddress(toAddress, "user");

msg.setSubject(subject,"UTF-8");

Multipart mp = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(message, "text/html");
mp.addBodyPart(htmlPart);
msg.setContent(mp);
Transport.send(msg);
 

3voto

CarlosZ Points 2455

Jetez un coup d'œil à http://commons.apache.org/email/. Ils ont une classe HtmlEmail qui fait probablement exactement ce dont vous avez besoin.

0voto

Lasa Points 11

Vous pouvez trouver une classe Java complète et très simple pour envoyer des courriels à l'aide d'un compte Google (gmail) ici, Envoyer un message électronique à l'aide d'une application java

Il utilise les propriétés suivantes

 Properties props = new Properties();
  props.put("mail.smtp.auth", "true");
  props.put("mail.smtp.starttls.enable", "true");
  props.put("mail.smtp.host", "smtp.gmail.com");
  props.put("mail.smtp.port", "587");
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X