Как я могу поместить ссылку HTML внутри тела письма? - PullRequest
12 голосов
/ 31 марта 2011

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

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

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! Я не понимаю, что происходит ...

Есть решение?

Ответы [ 5 ]

16 голосов
/ 31 марта 2011

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

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

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

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

7 голосов
/ 30 сентября 2011

Я просто отвечу, если это не сработает для кого-то еще.
Я попробовал метод Божо, и по какой-то причине электронное письмо не пришло, когда я набрал 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);
2 голосов
/ 12 июня 2014

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

1 голос
/ 21 января 2015

Мы можем создать html-ссылку в теле письма, используя java-код. В моем случае я разрабатываю пароль сброса, в котором я должен создать ссылку и отправить ее пользователю по почте. Вы создадите одну строку.введите все URL. Если вы добавляете http к тому .it ведет себя как ссылка в письме.

Пример: String mailBody = "http://localhost:8080/Mail/verifytoken?token="+ token;

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

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

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

0 голосов
/ 13 августа 2016

Вы можете сделать правильно, как это работает для меня.

 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 = "XXXXXXX@gmail.com";      
           String from = "XXXXXXXX@gmail.com";
           final String username = "XXXXX@gmail.com";
           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);
     }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...