如何将 HTML 链接放在电子邮件正文中?

2022-09-03 17:38:40

我有一个可以发送邮件的应用程序,用Java实现。我想在de mail中放置一个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 link = "<a href=\"WWW.google.es\">ACTIVAR CUENTA</a>";

但是在收到的消息中,链接显示为链接字符串,而不是HTML超链接!我不明白会发生什么...

任何解决方案?


答案 1

添加链接就像在字符串内部添加链接一样简单。您应该将电子邮件设置为支持html(这取决于您正在使用的库),并且在发送电子邮件内容之前不应将其转义。<a href="..">text</a>

更新:由于您正在使用,因此应按以下方式设置文本:java.mail

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

html是哑剧子类型(这将导致 )。该方法使用的默认值为text/htmlsetText(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);