java郵件亂碼的徹底解決方案
java發(fā)送郵件亂碼解決方法:
//設(shè)置郵件主題 message.setSubject(MimeUtility.encodeText(mail_subject,MimeUtility.mimeCharset("gb2312"), null)); message.setContent(sendmessage, "text/html;charset=gbk"); // 設(shè)置郵件格式 message.setSentDate(new Date()); // 設(shè)置郵件發(fā)送日期 //設(shè)置郵件發(fā)件人名稱 Address address = new InternetAddress(usernames, MimeUtility.encodeText(personalName,MimeUtility.mimeCharset("gb2312"), null));
當(dāng)一段 Text 或者 HTML 通過電子郵件傳送時(shí),發(fā)送的內(nèi)容首先通過一種指定的字符編碼轉(zhuǎn)化成“字節(jié)串”,然后再把“字節(jié)串”通過一種指定的傳輸編碼(Content-Transfer-Encoding)進(jìn)行轉(zhuǎn)化得到另一串“字節(jié)串”。
郵件的標(biāo)題,用了一種更簡短的格式來標(biāo)注“字符編碼”和“傳輸編碼”。
擴(kuò)展內(nèi)容
1.構(gòu)造MimeMessageHelper時(shí)設(shè)置編碼格式
@Resource private JavaMailSender javaMailSender; @Test public void mimeMailTest() throws MessagingException { String email = "xxx-xxx@163.com"; String mailCode = 123456789; // 創(chuàng)建多用途郵件消息對(duì)象 MimeMessage mailMessage = javaMailSender.createMimeMessage(); // 創(chuàng)建郵件消息助手(參數(shù)2:設(shè)置為true,表示可以發(fā)送超鏈接、附件) MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "UTF-8"); messageHelper.setTo("xxx-xxx@163.com"); messageHelper.setFrom("xxx-xxx@163.com"); messageHelper.setSubject("注冊(cè)提醒"); String text = "注冊(cè)成功,<a href=\"http://127.0.0.1:8080/userActivate" + "?code=" + mailCode + "&email=" + email + "\">點(diǎn)擊激活</a>"; //參數(shù)2表示是否以html格式發(fā)送.如不設(shè)置會(huì)發(fā)送純文本 messageHelper.setText(text, true); javaMailSender.send(mailMessage); }
2.構(gòu)造MimeMessageHelper 不設(shè)置編碼,使用MimeMessage 的setContent()方法時(shí)設(shè)置
@Test public void mimeMailTest2() throws MessagingException { String email = "xxx-xxx@163.com"; String mailCode = 123456789; // 創(chuàng)建多用途郵件消息對(duì)象 MimeMessage mailMessage = javaMailSender.createMimeMessage(); // 創(chuàng)建郵件消息助手 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage); messageHelper.setTo("xxx-xxx@163.com"); messageHelper.setFrom("xxx-xxx@163.com"); messageHelper.setSubject("注冊(cè)提醒2"); String text = "注冊(cè)成功2,<a href=\"http://127.0.0.1:8080/userActivate" + "?code=" + mailCode + "&email=" + email + "\">點(diǎn)擊激活</a>"; //參數(shù)2:以html格式發(fā)送 mailMessage.setContent(text, "text/html;charset=UTF-8"); javaMailSender.send(mailMessage); }
上一篇:如何解決java壓縮文件亂碼問題
欄 目:Java
本文標(biāo)題:java郵件亂碼的徹底解決方案
本文地址:http://mengdiqiu.com.cn/a1/Java/8924.html
您可能感興趣的文章
- 01-10Java實(shí)現(xiàn)動(dòng)態(tài)模擬時(shí)鐘
- 01-10利用Java實(shí)現(xiàn)復(fù)制Excel工作表功能
- 01-10JavaWeb實(shí)現(xiàn)郵件發(fā)送功能
- 01-10java基于poi導(dǎo)出excel透視表代碼實(shí)例
- 01-10Java實(shí)現(xiàn)動(dòng)態(tài)數(shù)字時(shí)鐘
- 01-10基于Java驗(yàn)證jwt token代碼實(shí)例
- 01-10java實(shí)現(xiàn)液晶數(shù)字字體顯示當(dāng)前時(shí)間
- 01-10淺談Java中真的只有值傳遞么
- 01-10Java動(dòng)態(tài)顯示當(dāng)前日期和時(shí)間
- 01-10如何解決線程太多導(dǎo)致java socket連接池出現(xiàn)的問題


閱讀排行
本欄相關(guān)
- 01-10Java實(shí)現(xiàn)動(dòng)態(tài)模擬時(shí)鐘
- 01-10Springboot中@Value的使用詳解
- 01-10JavaWeb實(shí)現(xiàn)郵件發(fā)送功能
- 01-10利用Java實(shí)現(xiàn)復(fù)制Excel工作表功能
- 01-10Java實(shí)現(xiàn)動(dòng)態(tài)數(shù)字時(shí)鐘
- 01-10java基于poi導(dǎo)出excel透視表代碼實(shí)例
- 01-10java實(shí)現(xiàn)液晶數(shù)字字體顯示當(dāng)前時(shí)間
- 01-10基于Java驗(yàn)證jwt token代碼實(shí)例
- 01-10Java動(dòng)態(tài)顯示當(dāng)前日期和時(shí)間
- 01-10淺談Java中真的只有值傳遞么
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置