I am using Java Mail API to sent test mail.
Assume I write email content with Traditional Chinese, all characters are broken.
How-To
We need to set default encoding to 'UTF-8' before send.
Here has the sample code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | import java.io.File; import java.util.Properties; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; public class MailTest { public static void main(String[] args) { Properties props = new Properties(); props.put("mail.smtp.starttls.enable", "true"); String host = "smtp.gmail.com"; int port = 587; String userName = "xxx"; String password = "xxx"; String mailTo = "xxx@gmail.com"; String subject = "Hello my friend~"; JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setJavaMailProperties(props); sender.setHost(host); sender.setPort(port); sender.setUsername(userName); sender.setPassword(password); // set email default encoding sender.setDefaultEncoding("UTF-8"); String content = "<p>親愛的客戶您好:</p>"; content += "<p>您的網路申請驗證碼為<font color='red'>12345</font>,僅限會員申請使用,請於收到e-mail <font color='red'>10分鐘內完成驗證,10分鐘後將自動失效</font></p>"; content += "<p>XXXX敬上</p>"; MimeMessage message = sender.createMimeMessage(); try { MimeMessageHelper helper; helper = new MimeMessageHelper(message, true); helper.setTo(mailTo); helper.setSubject(subject); // true means it is a html format email helper.setText(content, true); // attachment1 FileSystemResource panda01 = new FileSystemResource(new File( "D://dropbox//picture//201602011033331.png")); helper.addInline("pand01", panda01); // attachment2 FileSystemResource panda02 = new FileSystemResource(new File( "D://dropbox//picture//panda.png")); helper.addInline("panda02", panda02); } catch (MessagingException e) { throw new RuntimeException(e); } //sent mail sender.send(message); } } |
Check the mail:
Reference
[1] http://stackoverflow.com/questions/5636255/unicode-chars-and-spring-javamailsenderimpl-no-unicode-chars-under-linux