1. 程式人生 > >Java使用javax.mail傳送郵件 解決收件人、發件人名字亂碼問題

Java使用javax.mail傳送郵件 解決收件人、發件人名字亂碼問題

/**
* 格式化 Name <[email protected]> 的地址
* @param name 名字
* @param email Email地址
* @return 格式化的地址
*/
public static String formatAddress(String name, String email) {
if (StringHelper.isNullOrEmpty(name)) {
return email;
}
try {
return String.format("%1$s <%2$s>", MimeUtility.encodeText(name, "UTF-8", "B")
, email);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return email;
}

上面的函式用來格式化一個類似 Name <[email protected]> 的收件人或發件人地址。
解決名字亂碼主要是其中一句:
MimeUtility.encodeText(name, "UTF-8", "B")

由於Email的規範,在smtp傳輸中不可使用中文字元。所以可以使用內建類的MimeUtility方法encodeText將收件人、發件人名字編碼即可。編碼方式有兩種:"B"代表Base64、"Q"代表QP(quoted-printable)方式。

注意:不能將名字和email地址一起編碼,如直接編碼 "Name <[email protected]>" 後當做收件人就會出錯。
注意:Mail的Subject和Content不需要我們顯式的編碼,在Set的時候這兩項會被javax.mail自動編碼。


上面的編碼中指定了"UTF-8"字符集,是因為我的來源字串在DB或者.properties檔案中的都是UTF-8編碼儲存的。如果您的來源字串字符集不一致,請修改成相應的。(直接寫在原始碼中的中文編碼是"iso-8859-1")

相關推薦

Java使用javax.mail傳送郵件 解決收件人名字亂碼問題

/*** 格式化 Name <[email protected]> 的地址* @param name 名字* @param email Email地址* @return 格式化的地址*/public static String formatAddres

java中傳送郵件,如何設定名稱暱稱

msg.setFrom (new InternetAddress ("[email protected]", "這裡是需要的暱稱", "UTF-8")); msg.setSubject (subject); msg.setText (content); msg.ad

封裝PHP mail函式傳送HTML郵件並使用中文且自定義郵箱地址

 在寫PHP程式碼時,傳送郵件著實是一件比較讓人鬱悶的事情,PHP預設提供的mail函式太弱了,很難琢磨清楚到底該怎麼用。雖然也有很一些做得比較好得第三方庫,可以提供相當強大的郵件功能,尤其是可以很簡單的配置其使用gm

Linux實用技巧——mail傳送郵件命令以及中文亂碼解決

文章目錄 0 前言及準備 1 mailx安裝及配置 1.1 安裝 1.2 編輯配置檔案 2 傳送郵件 2.1 無正文郵件 2.2 有正文郵件 3 郵件中文亂碼問題解決

Java Mail 傳送郵件126163 QQ

下面是傳送的程式碼(可測試) //1、創 建 連 接 對 象,連 接 到 郵 箱 服 務 器 Properties props = new Properties(); //開 啟 debug 調 試 props.setProperty("mail.

linux學習-mail傳送郵件mail不能郵件

主機:centos 7 , 安裝sendmail,啟動sendmail,一般就可以了,但是有些同學為什麼不行,就是啟不動出現如下的情況!那現在如何解決。 yum install sendmailsystemctl start sendmail.service system

javax.mail 傳送郵件(工具類)

前言:注意自己郵箱賬號的授權碼 傳送不成功,要設定授權碼(勿掉坑裡) 1.座標 <dependency> <groupId>javax.mail</groupId> <artifactId&

python 傳送郵件(文字表格附件)

import pandas as pd import smtplib   from email.mime.text import MIMEText   from email.mime.multipart import MIMEMultipart filena

centos-sendmail&mail傳送郵件

一、安裝: 安裝sendmail: yum -y install sendmail systemctl start sendmail 安裝mailx: yum install -y mailx 二、傳送: 通過檔案內容傳送:

Python傳送郵件不需要密碼認證

#!/usr/bin/python # coding: UTF-8 import smtplib from email.mime.text import MIMEText receivers_list=["[email protected]",] #mail_h

java傳送郵件帶附件格式可以實現轉發祕密轉發等操作

最近在研究java傳送郵件帶附件、格式、可以實現轉發、祕密轉發等操作的元件,下面把程式碼和大家共享下,本來想做資源共享的,但是下載就會消耗大家的積分,沒積分就沒得看了,想想還是算了,直接發出來了,個人知識一點點的研究,敬請大家指點 2010-12-14  package njfc.co

Java mail 傳送郵件 主題(標題)亂碼

最近開發遇到Javamail  傳送郵件標題亂碼問題,騰訊、網易郵箱不會亂碼,阿里郵箱  標題則會亂碼。解決辦法: String subject = MimeUtility.encodeWord(mailEntity.getMailSubject(), "UTF-8", "Q");

Java.Mail 傳送郵件工具類

1.首先確保傳送人的郵箱  跟  接收人的郵箱  的smtp協議開著.   ------》可以上郵箱設定裡面開啟. 這裡使用的QQ郵箱   我們可以在郵箱幫助中找到QQ郵箱的pop3跟smtp伺服器地址已經開放的相應埠 一般是465,或者是587 2.極其重要一點

Javax.mail 傳送郵件異常

一、執行過程丟擲異常 1、Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 原因:此異常多出現在J2EE版本的郵件服務中,因為J2EE原

springboot2.0傳送郵件。QQ網易【親測有效】

目的:springboot2.0-傳送郵箱。QQ、網易郵箱  第一步:新增依賴【網上都是說添一種依賴這是錯誤的,會出現注入的時候為null】 <!--郵箱依賴--> <dependency> <grou

java mail 傳送郵件

程式碼 package test.smtp; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; import javax.mail.Session; import java

System.Net.Mail 傳送郵件

主要是用到了System.Web.Mail名稱空間,用到了此空間的三個類,分別是: ●MailMessage類,用於構造電子郵件 ●MailAttachment類,用於構造電子郵件附件 ●SmtpMail類,用於傳送電子郵件及其附件 1、MailMessage類構造電子郵件 此類主要有以下屬性和方法 ★F

Linux——使用mail傳送郵件給外部郵箱

相信大家都用過電子郵箱,例如網易163、騰訊QQ、Gmail等等。 在上一篇部落格裡小編剖析了crond&crontab(部落格連結http://blog.csdn.net/enchanting_/article/details/73752291),然

Python smtplib傳送郵件 包含文字附件圖片等

解決之前版本的問題,下面為最新版 #!/usr/bin/env python # coding:gbk """ FuncName: sendemail.py Desc: sendemail with text,image,audio,application... Dat

[python3.6 flask web學習]使用Flask-Mail傳送郵件

首先進入虛擬環境安裝flask-mail擴充套件模組 pip install flask-mail 傳送郵件需要配置傳送郵件的伺服器。flask-mail固定的配置變數名如下 在macos或者linux作業系統中使用export命令匯入環境變數 export MAIL_