我順利通過Gmail SMTP服務器使用下面的一段代碼發送電子郵件:使用JavaMail發送包含Unicode字符的郵件
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.ssl", "true");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.timeout", "5000");
props.put("mail.smtp.connectiontimeout", "5000");
// Do NOT use Session.getDefaultInstance but Session.getInstance
// See: http://forums.sun.com/thread.jspa?threadID=5301696
final Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USER, PWD);
}
});
try {
final Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(USER));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(TO));
message.setSubject(emailSubject);
message.setText(emailContent);
Transport.send(message);
emailSent = true;
} catch (final MessagingException e) {
e.printStackTrace();
}
其中emailContent是字符串不會包含Unicode字符(如歐元符號)。
當電子郵件到達(在另一個GMail帳戶中)時,歐元符號已被轉換爲ASCII'?'問號。
我對電子郵件瞭解不多:電子郵件可以使用任何字符編碼嗎?
我應該在上面的代碼中修改什麼,以便使用允許使用Unicode字符的編碼?
哪裏/我該怎麼辦需要這樣做? – NoozNooz42 2010-12-22 17:41:31
而不是調用message.setText(emailContent),你想調用message.setText(emailContent,「utf-8」)。這是更正確的方法。 – dkarp 2010-12-30 19:23:47