Как я могу поместить ссылку 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);
}
}