it-swarm.com.de

Wie kann ich einen HTML-Link in einen E-Mail-Text einfügen?

Ich habe eine Anwendung, die Mails senden kann, implementiert in Java. Ich möchte einen HTML-Link in die E-Mail einfügen, aber der Link wird als normaler Buchstabe und nicht als HTML-Link angezeigt. Wie kann ich den HTML-Link in einen String einfügen? Ich brauche Sonderzeichen? ich danke dir sehr

Update: HI jeder! danke für oyu antworten! Hier ist mein 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;
    }
}

Und hier der Body String:

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

In der empfangenen Nachricht wird der Link jedoch als Link-Zeichenfolge und nicht als HTML-Hyperlink angezeigt! Ich verstehe nicht was passiert.

Irgendeine Lösungsmöglichkeit?

12
Rafa

Das Hinzufügen des Links ist so einfach wie das Hinzufügen von <a href="..">text</a> in die Zeichenfolge. Sie sollten Ihre E-Mail so einstellen, dass sie HTML unterstützt (dies hängt von der verwendeten Bibliothek ab), und Sie sollten Ihren E-Mail-Inhalt nicht vor dem Senden schützen.

Update: Da Sie Java.mail verwenden, sollten Sie den Text folgendermaßen einstellen:

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

html ist der Mime-Subtyp (dies führt zu text/html). Der Standardwert, der von der setText(string)-Methode verwendet wird, ist plain.

16
Bozho

Ich werde nur antworten, falls dies für andere nicht funktioniert hat.
Ich habe die Methode von Bozho ausprobiert, und aus irgendeinem Grund konnte die E-Mail nicht gesendet werden, wenn ich die setText für die gesamte Nachricht verfasste. 

Ich habe es versucht 

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

dies kam jedoch als Anhang in Outlook und nicht im üblichen Text. Um dieses Problem für mich und in Outlook zu beheben, habe ich anstelle von mbp.setContent und message.setText nur einen einzigen setText für den Nachrichtentext ausgeführt. dh:

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

Mein Code für die Nachricht sieht folgendermaßen aus: 

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

Das Anhängen von "http: //" vor der URL hat für mich funktioniert.

2
mindreader

Wir können HTML-Link im E-Mail-Text mithilfe von Java-Code erstellen. In meinem Fall entwickle ich ein Reset-Kennwort, in dem ich einen Link erstellen und an den Benutzer über die E-Mail senden soll. Sie erstellen eine Zeichenfolge. Mit einer Zeichenfolge geben Sie alles ein url.If fügen Sie das http zu dem hinzu, mit dem sich .it wie der Link in der Mail verhält.

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

sie können einen Wert mit url senden, indem Sie die Abfragezeichenfolge hinzufügen. Ihr Token hat einen verschlüsselten Wert.

geben Sie mailBody in Ihren E-Mail-Textparameter ein. ex ":" Hi "+ userdata.getFirstname () + "\n\n Sie haben ein neues Passwort von der X-Anwendung angefordert. Bitte verwenden Sie den folgenden Link, um sich anzumelden. "+ "\N\n Klicken Sie auf Link: "+ mailBody);

Die obige Zeichenfolge ist ein Parameter, den Sie an Ihren E-Mail-Dienst übergeben müssen. Der E-Mail-Dienst übernimmt Parameter wie von, bis, Betreff, body.Hier habe ich den Rumpf angegeben, wie er sein soll. Sie übergeben die Werte von, bis, an nach deiner Besetzung 

sie können es richtig machen, es funktioniert für mich.

 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