我有一个可以发送邮件的应用程序,用Java实现。我想在邮件中放置一个HTML链接,但链接显示为普通字母,而不是HTML链接... 我怎么能在HTML链接里面做一个字符串?我需要特殊字符吗?非常感谢你
更新 嗨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;
}
}
这里是身体字符串:
String link = "<a href=\"WWW.google.es\">ACTIVAR CUENTA</a>";
但是在收到的消息中,链接显示为链接字符串,而不是HTML超链接!我不明白会发生什么......
任何解决方案?
答案 0 :(得分:16)
添加链接就像在字符串中添加<a href="..">text</a>
一样简单。您应该将电子邮件设置为支持html(这取决于您使用的库),并且在发送之前不应该转义您的电子邮件内容。
更新:由于您使用的是java.mail
,因此您应该以这种方式设置文字:
message.setText(body, "UTF-8", "html");
html
是mime子类型(这将导致text/html
)。 setText(string)
方法使用的默认值为plain
答案 1 :(得分:7)
如果这对其他人不起作用,我只会回答
我尝试了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);
答案 2 :(得分:2)
在网址为我工作之前附加“http://”。
答案 3 :(得分:1)
我们可以使用java代码在电子邮件正文中创建html链接。在我的情况下,我正在开发重置密码,我应该创建链接并通过邮件发送给用户。你将创建一个字符串。在字符串中你输入所有url。如果你将http添加到那个.it就像邮件中的链接一样。
Ex:String mailBody =&#34; http:// localhost:8080 / Mail / verifytoken?token =&#34; + token;
你可以通过添加查询字符串来发送一些带url的值.Her令牌有一些加密值。
将mailBody放入您的邮件正文参数中。 ex&#34;:&#34;嗨&#34; + userdata.getFirstname()+ &#34; \ n \ n您已从X应用程序请求输入新密码。请使用以下链接登录。&#34; + &#34; \ n \ n点击链接:&#34; + mailBody);
以上是你必须传递给你的邮件服务的参数字符串。电子邮件服务接受诸如from,to,subject,body之类的参数。我已经给出了它应该如何的身体。你传递了来自, ,主题值根据你的演员
答案 4 :(得分:0)
你能以正确的方式为我工作。
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);
}
}