Как я могу поместить ссылку HTML внутри тела электронной почты?

У меня есть приложение, которое может отправлять письма, реализованные на Java. Я хочу поместить HTML-ссылку внутри почты, но ссылка отображается как обычные буквы, а не как HTML-ссылка... Как я могу сделать внутри HTML-ссылки в String? Мне нужны специальные персонажи? большое вам спасибо

Update: Привет всем! спасибо за ответы oyu! Вот мой код:

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;
    }
}

И вот тело String:

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

Но в полученном сообщении ссылка появляется как строка ссылки, а не как гиперссылка HTML! Я не понимаю, что происходит...

Любое решение?

Ответ 1

Добавление ссылки так же просто, как добавление <a href="..">text</a> внутри строки. Вы должны настроить свой адрес электронной почты для поддержки html (это зависит от используемой библиотеки), и вам не следует избегать содержимого электронной почты перед отправкой.

Обновление: поскольку вы используете java.mail, вы должны установить текст следующим образом:

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

html - подтип mime (это приведет к text/html). Значением по умолчанию, используемым методом setText(string), является plain

Ответ 2

Я просто буду отвечать, если это не сработает для кого-то другого.
Я попробовал метод Bozho, и по какой-то причине письмо не отправлено, когда я сделал setText в сообщении в целом.

Я пробовал

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

но это произошло как приложение в Outlook, а не в обычном тексте. Чтобы исправить это для меня и в Outlook, вместо выполнения mbp.setContent и message.setText, я просто сделал один setText в части тела сообщения. то есть:

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

С моим кодом для сообщения, выглядящего следующим образом:

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);

Ответ 3

Добавление "http://" до того, как URL-адрес работал у меня.

Ответ 4

Мы можем создать html-ссылку в теле письма с помощью java-кода. В моем случае я разрабатываю пароль reset, где я должен создать ссылку и отправить пользователю через почту. Вы создадите одну строку. С помощью string вы набираете весь url.If вы добавляете http к тому .it ведет себя как ссылка в письме.

Пример: String mailBody = "http://localhost: 8080/Mail/verifytoken? токен =" + токен;

вы можете отправить некоторое значение с помощью url, добавив строку запроса. Его токен имеет некоторое зашифрованное значение.

Поместите mailBody в свой параметр тела почты. ex ": " Привет "+ userdata.getFirstname() +                      " \n\n Вы запросили новый пароль из приложения X. Используйте приведенную ниже ссылку для входа. "+                      " \n\n Нажмите ссылку:" + mailBody);

Выше была строка, которая является параметром, который вы должны передать в свою почтовую службу. Служба Email принимает такие параметры, как from, to, subject, body.Here я дал телу, как это должно быть. Вы передаете от, до, значения объекта в соответствии с вашим литом

Ответ 5

вы можете сделать правильный путь для меня.

 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);
     }
  }