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

Raf*_*afa 14 html java email hyperlink

我有一个可以发送邮件的应用程序,用Java实现.我想在邮件中放置一个HTML链接,但链接显示为普通字母,而不是HTML链接...如何将HTML链接内部转换为字符串?我需要特殊字符吗?非常感谢

更新: HI evereybody!感谢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;
    }
}
Run Code Online (Sandbox Code Playgroud)

而这里的身体字符串:

        String link = "<a href=\"WWW.google.es\">ACTIVAR CUENTA</a>";
Run Code Online (Sandbox Code Playgroud)

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

有解决方案吗

Boz*_*zho 17

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

更新:因为您正在使用java.mail,您应该以这种方式设置文本:

message.setText(body, "UTF-8", "html");
Run Code Online (Sandbox Code Playgroud)

html是mime子类型(这将导致text/html).该setText(string)方法使用的默认值是plain


Mik*_*ike 7

我只是回答,以防这对其他人不起作用.
我尝试了Bozho的方法,并且出于某种原因,当我setText在整个消息上执行时,电子邮件不会发送.

我试过了

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setContent(body, "text/html"); 
Run Code Online (Sandbox Code Playgroud)

但这是作为Outlook中的附件而不是通常的文本.为了解决这个问题,在Outlook中,我没有做mbp.setContent和message.setText,而只是在消息体部分做了一个setText.即:

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setText(messageBody,"UTF-8", "html");
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

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);
Run Code Online (Sandbox Code Playgroud)


min*_*der 5

在对我有用的 URL 之前附加“http://”。