javax.mail 報錯 501 mail from address must be same as authorization user 解決方法
從一個郵箱傳送郵件
從一個郵箱傳送郵件報錯 501 mail from address must be same as authorization user
,是由於獲取Session
時的賬號和Message
中設定的郵箱地址setFrom
不一致引起的
程式碼如下:
/**
* 伺服器郵箱登入驗證
*/
class MailAuthenticator extends Authenticator {
private String user;
private String pwd;
public MailAuthenticator(String user, String pwd) {
this .user = user;
this.pwd = pwd;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, pwd);
}
}
public void sendMail() {
String to = "[email protected]";// 收信郵箱
String subject = "javaMail測試傳送" ;// 郵件主題
String text = "測試郵件";// 郵件內容
_LOG.debug("傳送郵箱伺服器配置資訊載入...");
Properties properties = new Properties();// 建立Properties物件
//方法一:手動新增配置資訊
// properties.setProperty("mail.transport.protocol", "smtp");// 設定傳輸協議
// properties.put("mail.smtp.host", "smtp.qq.com");// 設定發信郵箱的smtp地址
// properties.setProperty("mail.smtp.auth", "true"); // 驗證
// String from = "[email protected]";// 發信郵箱
// Authenticator auth = new MailAuthenticator(from, "11111111"); // 使用驗證,建立一個Authenticator
//方法二:讀取配置檔案
String propertiesFilePath = "conf/jmail.properties";
try {
InputStream in = JavaMailSenderDemo.class.getClassLoader().getResourceAsStream(propertiesFilePath);
properties.load(in);//讀取配置資訊
in.close();
} catch (IOException e1) {
_LOG.error("路徑:"+propertiesFilePath+"讀取失敗!", e1);
}
String from = properties.getProperty("mail.userName");// 發信郵箱
Authenticator auth = new MailAuthenticator(from, properties.getProperty("mail.password")); // 使用驗證,建立一個Authenticator
_LOG.debug("傳送郵箱伺服器配置資訊載入完畢,建立session註冊配置");
Session session = Session.getDefaultInstance(properties, auth);// 根據Properties,Authenticator建立Session
try {
Message message = new MimeMessage(session);// Message儲存傳送的電子郵件資訊
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));// 設定收信郵箱
message.setSubject(subject);// 設定主題
message.setText(text);// 設定內容
Transport.send(message);// 傳送
_LOG.debug("傳送完畢!");
} catch (MessagingException e) {
e.printStackTrace();
}
}
如果 new MailAuthenticator(userName, password);
和 message.setFrom(new InternetAddress(fromAddress));
userName
與fromAddress
不一致將會報出
501 mail from address must be same as authorization user
的錯誤
從多個郵箱傳送郵件
現在要在一個程序中同時由多個郵箱傳送郵件。此事不但要注意上面描述的情況外,還要注意一點,在同一個程序中Session.getDefaultInstance
得到的是一個單例的Session物件,就是第一次getDefaultInstance
得到的Session物件。看Session物件中原始碼就一目瞭然
// The default session.
private static Session defaultSession = null;
public static synchronized Session getDefaultInstance(Properties props,
Authenticator authenticator) {
if (defaultSession == null)
defaultSession = new Session(props, authenticator);
else {
// have to check whether caller is allowed to see default session
if (defaultSession.authenticator == authenticator)
; // either same object or both null, either way OK
else if (defaultSession.authenticator != null &&
authenticator != null &&
defaultSession.authenticator.getClass().getClassLoader() ==
authenticator.getClass().getClassLoader())
; // both objects came from the same class loader, OK
else
// anything else is not allowed
throw new SecurityException("Access to default session denied");
}
return defaultSession;
}
也就是說程式中我們要切換髮送方的郵箱賬戶,我們就不能用Session.getDefaultInstance
獲取Session,我們必須用Session.getInstance
,使我們每次切換賬戶得到的都是一個新的Session物件。
相關推薦
javax.mail 報錯 501 mail from address must be same as authorization user 解決方法
從一個郵箱傳送郵件 從一個郵箱傳送郵件報錯 501 mail from address must be same as authorization user,是由於獲取Session時的賬號和Message中設定的郵箱地址setFrom不一致引起的 程式碼如
redmide 配置郵箱 出錯記錄501 mail from address must be same as authorization user
redmine 》配置 》郵件通知 》郵件發件人地址,跟配置檔案的傳送郵箱要統一。 production: delivery_method: :smtp smtp_settings: ssl: true address: "sm
C#使用QQ郵箱發送,出現mail from address must be same as authorization user異常
第三方 smt log .cn user alt from 登錄密碼 mtp 1.未開啟pop3或者smtp 2.在使用第三方客戶端時,郵箱登錄密碼不是“登錄密碼”,應該是生成的授權碼。 如圖: C#使用QQ郵箱發送,出現mail from address must b
MyBatis多個接口參數報錯:Available parameters are [0, 1, param1, param2], 及解決方法
pan 解決 而且 crm ger int mybatis 添加 為什麽 1. sql語句如下: SELECT * FROM tb_crm_user WHERE id = #{userId, jdbcType=INTEGER} AND
mac下python環境pip報錯[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解決方法
install oot cert get ping trap rmi ssl cert macbook 1.mac下python環境pip報錯: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecti
Https協議報錯:com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl解決方法
toc 使用 地址 bae aaaaa line 點擊 pro details 旭日Follow_24 的CSDN 博客 ,全文地址請點擊: https://blog.csdn.net/xuri24/article/details/82220333 所用應用服務器:JBos
git報錯:Pull is not possible because you have unmerged files解決方法
git pull 的時候報如下錯誤程式碼: error: Pulling is not possible because you have unmerged files. 嘗試用git stash沒有作用。 Pull is not possible because you have
關於ASP.NET 伺服器報錯 Server Error in '/' Application Runtime Error 錯誤及解決方法
今天遇到一個錯誤 程式在伺服器上執行時報錯 先貼上錯誤程式碼 自己也在網上找了一些解決方法,把錯誤定位到伺服器的配置檔案也就是Web.config的問題, 於是在system.web節點下 加上customErrors mode="Off" 這個節點 可是問題並沒有解決 在此也說一下 找錯誤的時候一
python報錯:TypeError: slice indices must be integers or None or have an __index__ method
宣告:本文為博主原創文章,不可轉載 https://blog.csdn.net/jjddss/article/details/73469104 在使用Python進行矩陣操作時,當內部含有除法時,會產生錯誤: TypeError: slice indices must be integers
python合併矩陣報錯all the input arrays must have same....和vstack() takes 1 positional arrays....
python中使用numpy合併矩陣a,b 報錯 密集(dense)矩陣的合併不報錯,然而稀疏矩陣(sparse)報錯了,即在矩陣中,多數的元素為0。 ValueError: all the input arrays must have same number of
linux系統啟動報錯:[contains a file system with errors, check forced]的解決方法參考【ZT】
https://blog.csdn.net/BabyFish13/article/details/51190148 1、解決參考一 Press enter for maintenance (or type Control-D to continue): /dev/sda3 co
nginx 啟動報錯“var/run/nginx/nginx.pid" no such file or directory解決方法
今天剛搭建的nginx伺服器啟動時,報錯“var/run/nginx/nginx.pid" no such file or directory,按照他的意思我在var/run/新建了一個資料夾nginx,重新啟動,啟動成功。 但是當我虛擬機器重啟後依然報錯“
python 之報錯:TypeError: write() argument must be str, not bytes
在用 pickle.dump() 儲存二進位制檔案時,一直報錯,程式如下: with open(os.path.join(FLAGS.train_data_dir, 'files.log'), 'w') as f: pickle.dump([training_paths, testing_
faster rcnn報錯:TypeError: slice indices must be integers or None or have an __index__ method
https://blog.csdn.net/qq_27637315/article/details/78849756 faster rcnn報錯:TypeError: slice indices must be integers or None or have an __index__ method
echart在ios部分機型報錯null is not object(evaluating 'ctx.save')問題解決方法
觸發背景: 在使用wex5平臺開發和使用xcode打包後的app上點選返回鍵再進去載入echart圖反覆3次左右必現 報錯如圖 解決方法: 多次檢查後,定位為退出頁面後沒有銷燬原物件,再次進入渲染導致的問題 在程式碼裡面加上離
本地開發Spark,執行JavaSparkPi例子報錯:A master URL must be set in your configuration
錯誤資訊: Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 18/08/21 18:39:27 INFO SparkContext: Running Spark versi
Java程式報錯:“找不到或無法載入主類”的解決方法
執行很簡單的java程式,就是在命令列中執行java HelloWorld,結果報錯:“找不到或無法載入主類”,通過上網查詢資料,有些資料上說是CLASSPATH值設定的有問題,最前面要有一個點才行,結
Nginx報錯:nginx: [error] invalid PID number "" in "/run/nginx.pid" 解決方法
伺服器重啟之後,執行 nginx -t 是OK的,然而在執行 nginx -s reload 的時候報錯nginx: [error] invalid PID number "" in "/run/nginx.pid"解決方法:需要先執行nginx -c /etc/nginx/
關於WIN10 edge瀏覽器報錯 找不到DNS地址 錯誤程式碼:INET_E_RESOURCE_NOT_FOUND 的解決方法
一直使用WIN10自帶的edge瀏覽器,感覺習慣了挺好用的,突然這兩天變得特別慢,然後直接網頁都刷不開了,在網上找了很久原因,沒有一個比較好的解決辦法,無意間在一次網頁沒刷開的時候注意到網頁下面的錯誤報告,查過之後才知道原因出在哪裡。借鑑系統之家的一篇教程:http://mi
支付寶報錯“暫時無法獲取訂單資訊,請稍後再試”解決方法
這個問題在網上找到好多,說法五花八門,單沒有一個方法解決。最後一行一行的測試發現,原來這個錯誤的真正原因是。 total_amount付款金額不能是0! total_amount付款金額不能是0! total_amount付款金額不能是0!