UTF-8 字符集不适用于 javax.mail
我使用Java Mail API来发送电子邮件。我正在使用联系人公式来发送输入,该输入必须发送到特定的电子邮件。
电子邮件发送没有问题,尽管我是一个丹麦人,因此我需要三个丹麦字符,即主题和电子邮件文本中的“æ”,“ø”和“å”。
因此,我看到我可以使用UTF-8字符编码来提供这些字符,但是当我的邮件发送时,我只看到一些奇怪的字母 - “㦔,“ã ̧”和“㥔 - 而不是丹麦字母 - “æ”,“ø”和“å”。
我发送电子邮件的方法如下所示:
public void sendEmail(String name, String fromEmail, String subject, String message) throws AddressException, MessagingException, UnsupportedEncodingException, SendFailedException
{
//Set Mail properties
Properties props = System.getProperties();
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("my_username", "my_password");
}
});
//Create the email with variable input
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setHeader("Content-Type", "text/plain; charset=UTF-8");
mimeMessage.setFrom(new InternetAddress(fromEmail, name));
mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("my_email"));
mimeMessage.setSubject(subject, "utf-8");
mimeMessage.setContent(message, "text/plain");
//Send the email
Transport.send(mimeMessage);
}
请帮助我了解如何更正此“错误”。