1
votes

Texte au format HTML dans un e-mail en Java

     try{
        String msg="Happy BirthDay Dear,<b> "+name.toUpperCase()+" </b> !!! Have a Great Day. \n \n Thank You \n Seva Development ";
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message);
        helper.setTo(email);
        helper.setText(msg);
        helper.setSubject("BirthDay");
        mailSender.send(message);

    }catch (Exception e){}
}
I am trying to bold the name of the user but it displays as it is in the mail as shown in the picture. Ideas or solutions are highly appreciated

3 commentaires

Rien dans cette question n'indique en soi un problème avec Spring ou le fait que vous utilisez des composants Spring. De plus, je serais choqué si une bibliothèque de courrier permettait une entrée utilisateur arbitraire pour dicter le formatage comme du texte en gras ou en italique; qui est généralement configuré explicitement dans le modèle.


Avez-vous essayé ma solution?


1) Notez que la String vue ci-dessus utilise un balisage pour certaines parties, mais utilise également des sauts de ligne ( \ n ) qui seront ignorés par HTML. 2) } catch (Exception e) {} N'ignorez pas les exceptions! Ils nous informent exactement de ce qui n'a pas fonctionné. À moins que la journalisation ne soit implémentée, appelez au moins Throwable.printStackTrace ()


4 Réponses :


3
votes

Essayez de définir helper.setContent (htmlMsg, "text / html");


1 commentaires

J'ai essayé d'utiliser votre code mais cela me donne un message d'erreur "Impossible de résoudre la méthode 'setContent (java.lang.String, java.lang.String)"



1
votes

Puisque vous utilisez MimeMessageHelper . Essayez ci-dessous.

 MimeMessageHelper helper = new MimeMessageHelper(message,true);
 helper.setText(msg, true);

Utilisez MimeMessageHelper.setText (emailContent, true) méthode. L'indicateur booléen true indique le contenu html.


0 commentaires

1
votes

Vous n'avez pas spécifié le type de contenu de l'e-mail. Dans ce cas, il est envoyé en clair.

Essayez de définir le type de contenu

Multipart multipart = new MimeMultipart("alternative");
BodyPart messageBodyPart;

// PLAIN TEXT
messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(textBody, "text/plain; charset=\"utf-8\"");
multipart.addBodyPart(messageBodyPart);

// HTML TEXT
messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(htmlBody, "text/html; charset=\"utf-8\"");
multipart.addBodyPart(messageBodyPart);

message.setContent(multipart);

Maintenant, lorsque vous ouvrez ce courrier avec n'importe quel client de messagerie, il le lira au format html.

Vous pouvez définissez également plusieurs formats en utilisant MimeMultitype

helper.setContent(htmlMsg, "text/html;  charset=\"utf-8\"");


0 commentaires

0
votes

Cela a fonctionné pour moi, j'ai changé le code de deux lignes, merci à tous pour votre contribution

private void sendEmail(String email,String name) throws Exception{
    Thread thread=new Thread(){
        @Override
        public void run() {

            try{
                String msg="Dear<b> "+name.toUpperCase()+" </b>,<p> On Behalf of someone we would like to wish you a Many many Happy returns of the day</p> <p style=color:red;>Happy Birthday and Have a Great Day.</p>\n \n Thank You!";

                MimeMessage message = mailSender.createMimeMessage();
                MimeMessageHelper helper = new MimeMessageHelper(message,true);
                helper.setTo(email);
                helper.setText(msg);
                message.setContent(msg, "text/html");                   
                helper.setSubject("BirthDay");
                mailSender.send(message);

            }catch (Exception e){}
        }
    };
    thread.start();

}

 entrez la description de l'image ici

p>


0 commentaires