web-dev-qa-db-fra.com

Comment puis-je insérer un lien HTML dans le corps d'un e-mail?

J'ai une application qui peut envoyer des mails, implémentée en Java. Je veux mettre un lien HTML dans le courrier électronique, mais le lien apparaît sous forme de lettres normales, pas sous forme de lien HTML ... Comment puis-je faire à l'intérieur du lien HTML dans une chaîne? J'ai besoin de caractères spéciaux? Merci beaucoup

Mise à jour: HI evereybody! merci pour oyu répond! Voici mon code:

public static boolean sendMail(Properties props, String to, String from,
          String password, String subject, String body)
{
    try
    {
        MimeBodyPart mbp = new MimeBodyPart(); 
        mbp.setContent(body, "text/html"); 
        MimeMultipart multipart = new MimeMultipart(); 
        multipart.addBodyPart(mbp); 



        // Preparamos la sesion
        Session session = Session.getDefaultInstance(props);

        // Construimos el mensaje
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setContent(multipart);
        message.addRecipient(
                Message.RecipientType.TO,
                new InternetAddress(to));
        message.setSubject(subject);
        message.setText(body);

        // Lo enviamos.
        Transport t = session.getTransport("smtp");
        t.connect(from, password);
        t.sendMessage(message, message.getAllRecipients());

        // Cierre.
        t.close();
        return true;
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return false;
    }
}

Et voici le corps String:

        String link = "<a href=\"WWW.google.es\">ACTIVAR CUENTA</a>";

Mais dans le message reçu, le lien apparaît en tant que chaîne de lien, pas en tant que lien hypertexte HTML! Je ne comprends pas ce qui se passe ...

Toute solution?

12
Rafa

L'ajout du lien est aussi simple que d'ajouter le <a href="..">text</a> à l'intérieur de la chaîne. Vous devez configurer votre courrier électronique pour qu'il prenne en charge le langage HTML (cela dépend de la bibliothèque que vous utilisez) et vous ne devez pas échapper au contenu de votre courrier électronique avant de l'envoyer.

Mise à jour: puisque vous utilisez Java.mail, vous devez définir le texte de la manière suivante:

message.setText(body, "UTF-8", "html");

html est le sous-type mime (cela donnera text/html). La valeur par défaut utilisée par la méthode setText(string) est plain

16
Bozho

Je vais juste répondre au cas où cela ne fonctionnerait pas pour quelqu'un d'autre.
J’ai essayé la méthode de Bozho et pour une raison quelconque, le courrier électronique n’a pas été envoyé lorsque j’ai rempli le setText du message dans son ensemble. 

J'ai essayé 

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setContent(body, "text/html"); 

mais cela est venu comme une pièce jointe dans Outlook au lieu de dans le texte habituel. Pour résoudre ce problème pour moi, et dans Outlook, au lieu de faire mbp.setContent et message.setText, je viens de créer un seul setText sur la partie corps du message. c'est à dire:

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setText(messageBody,"UTF-8", "html");

Avec mon code pour le message qui ressemble à ceci: 

MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
for(String str : to){
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(str));
}        
message.setSubject(subject);
// Create the message part 
MimeBodyPart messageBodyPart = new MimeBodyPart();

// Fill the message
messageBodyPart.setText(messageBody,"UTF-8","html");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);

// Put parts in message
message.setContent(multipart);

// Send the message
Transport.send(message);
7
Mike

Ajouter "http: //" avant que l’URL ne fonctionne pour moi.

2
mindreader

Nous pouvons créer un lien html dans le corps de l'e-mail en utilisant du code Java. Dans mon cas, je suis en train de développer un mot de passe de réinitialisation où je devrais créer un lien et l'envoyer à l'utilisateur par le courrier. Vous créerez une chaîne. Si vous ajoutez le fichier http à celui qui. se comporte comme un lien dans le courrier.

Ex: String mailBody = "http: // localhost: 8080/Mail/verifytoken? Token =" + jeton;  

vous pouvez envoyer une valeur avec url en ajoutant une chaîne de requête. Son jeton a une valeur chiffrée.

placez mailBody dans le paramètre de corps de votre message. ex ":" Hi "+ userdata.getFirstname () + "\n\n Vous avez demandé un nouveau mot de passe à l'application X. Veuillez utiliser le lien ci-dessous pour vous connecter. "+ "\N\n Cliquez sur le lien: "+ mailBody);

Ce qui précède est la chaîne de paramètres que vous devez transmettre à votre service de messagerie.Le service de messagerie prend des paramètres tels que de, à, sujet, corps.Voici, j'ai donné au corps comment il devrait être. Vous passez les valeurs de, de, à, de sujet selon votre casting 

1

vous pouvez faire ce qui est bien pour moi.

 public  class SendEmail
 {
   public void getEmail(String to,String from, String userName,String password,Properties props,String subject,String messageBody)
  {
      MimeBodyPart mimeBodyPart=new MimeBodyPart();
      mimeBodyPart.setContent(messageBody,"text/html");
      MimeMultipart multipart=new MimeMultipart();
      multipart.addBodyPart(mimeBodyPart);
      Session session=Session.getInstance(props,new Authenticator()
        {
          protected PasswordAuthentication getPasswordAuthentication()
           {
              return new PasswordAuthentication(userName,password);
           }
       });
         try{
              MimeMessage message=new MimeMessage(session);
              message.setFrom(new InternetAddress(from));
              message.setContent(multipart);
              message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
             message.setSubject("Have You got Mail!");
             message.setText(messageBody,"UTF-8","html");
             Transport.send(message);
           }
           catch(MessagingException ex){System.out.println(ex)}
      public static void main(String arg[]){
         SendEmail sendEmail=new SendEmail();
           String to = "[email protected]";      
           String from = "[email protected]";
           final String username = "[email protected]";
           final String password = "XXXX";
            String subject="Html Template";

          String body = "<i> Congratulations!</i><br>";
          body += "<b>Your Email is working!</b><br>";
          body += "<font color=red>Thank </font>";
          String Host = "smtp.gmail.com";
          Properties props = new Properties();
          props.put("mail.smtp.auth", "true");
          props.put("mail.smtp.starttls.enable", "true");
          props.put("mail.smtp.Host", Host);
          props.put("mail.smtp.port", "587");
          sendEmail.getEmail(to,from,username,password,props,subject,body);
     }
  }
0
Deepak Singh