使用 html Java 发送电子邮件
Send email with html Java
我正在发送内含 HTML 代码的电子邮件,一切正常,除了我认为的一些字符集错误。
我的 Java 代码:
public static void sendMail(String to, String from, String body, String subject) {
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", "smtp.gmail.com");
properties.setProperty("mail.smtp.socketFactory.port", "465");
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(GMAIL_USERNAME, GMAIL_PASSWORD);
}
});
try {
MimeMessage message = new MimeMessage(session); // email message
message.setFrom(new InternetAddress(from)); // setting header fields
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject); // subject line
message.setContent(body, "text/html");
message.setHeader("charset", "UTF-8");
Transport.send(message);
} catch (MessagingException mex) {
mex.printStackTrace();
}
我的html内容:
String htmlCode =
"<h2>ZDelivery<h2>"+
"<br/><button><a href='"+confirmString+"'>Активировать аккаунт</a></button>";
以及我收到的电子邮件:
我错过了什么?
通过emailheader字段Content-Type
传输编码,由setContent()
方法的mime类型参数设置:
message.setContent(body, "text/html; charset=UTF-8");
通过不在 mime 类型中设置字符集,java 将为 text/html
将其设置为 ISO-8859-1(这是 RFC-2854 中定义的默认值)。
您正在设置电子邮件 header 字段 charset
。这不是正式的电子邮件 header 字段,这就是电子邮件客户端忽略它的原因。
我正在发送内含 HTML 代码的电子邮件,一切正常,除了我认为的一些字符集错误。 我的 Java 代码:
public static void sendMail(String to, String from, String body, String subject) {
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", "smtp.gmail.com");
properties.setProperty("mail.smtp.socketFactory.port", "465");
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(GMAIL_USERNAME, GMAIL_PASSWORD);
}
});
try {
MimeMessage message = new MimeMessage(session); // email message
message.setFrom(new InternetAddress(from)); // setting header fields
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject); // subject line
message.setContent(body, "text/html");
message.setHeader("charset", "UTF-8");
Transport.send(message);
} catch (MessagingException mex) {
mex.printStackTrace();
}
我的html内容:
String htmlCode =
"<h2>ZDelivery<h2>"+
"<br/><button><a href='"+confirmString+"'>Активировать аккаунт</a></button>";
以及我收到的电子邮件:
我错过了什么?
通过emailheader字段Content-Type
传输编码,由setContent()
方法的mime类型参数设置:
message.setContent(body, "text/html; charset=UTF-8");
通过不在 mime 类型中设置字符集,java 将为 text/html
将其设置为 ISO-8859-1(这是 RFC-2854 中定义的默认值)。
您正在设置电子邮件 header 字段 charset
。这不是正式的电子邮件 header 字段,这就是电子邮件客户端忽略它的原因。