用Spring的郵件封裝類JavaMailSenderImpl傳送郵件:注意埠號不需要設定(設定了反而linux上釋出後傳送失敗)
===》###注意埠號不需要設定:》加不加埠:window都行,linux加了埠反而發不出去!
是的。配置了埠,Windows沒問題。linux就有問題了。仔細檢視錯誤資訊:
發現是 JavaMail API 程式碼問題。排除了是我的程式碼邏輯問題。
而且是埠超時問題。
看到這個部落格,有了點思路。去掉了埠。本地windows測試通過。
於是給測試同學重新發版。可以了。
部落格:https://blog.csdn.net/qq_33556185/article/details/51028952
====》以下轉載:其內容。
JavaMailSenderImpl是spring封裝的郵件傳送封裝類,支援普通文字、附件、html。博主今天用到了用qq郵箱傳送普通文字,以後若用到了其他,再補充在下面。用qq郵箱的smtp郵件伺服器,前提之一是關閉登入保護,開啟郵箱登入保護,無法使用smtp服務。若開啟了,前往安全中心關閉。
前提之二是開啟smtp服務,在郵箱的設定-賬號設定-開啟服務裡檢視是否開啟了POP3/SMTP服務。開啟之後,會顯示一個授權碼。此授權碼作為發件方的密碼,qq郵箱可能作為安全考慮,防止郵箱密碼洩露。
修改郵箱密碼之後,授權碼會失效,要想獲取新的授權碼,開啟服務的下方點選生成授權碼連結,即可得到新的16位授權碼。
上面的前提步驟滿足後,JavaMailSenderImpl就能正常使用。
傳送郵件5步驟:1加入spring的mail包;2建立郵件伺服器;3加認證機制;4建立郵件內容;5傳送郵件。
建立郵件伺服器的時候,注意埠號不需要設定
JavaMailSenderImpl的幾個屬性設定說明如下:
Host:郵箱伺服器主機。
Port:埠號。
Username:發件方賬戶。
Password:密碼,qq郵箱的話此處設定16位授權碼,不是郵箱密碼,切記!
mail.smtp.auth:認證機制開關,記得開啟。
mail.smtp.starttls.enable:TLS通訊協議開關,連線qq的SMTP伺服器,需使用此通訊協議。
mail.smtp.timeout :連線超時時間,單位毫秒。
傳送文字訊息用SimpleMailMessage類
它的幾個重要屬性說明如下:
From發件方的賬戶,和Username的值相同
To收件方
Subject郵件主題
Text郵件內容
public void simpleMailSend(String email,String subject,String msg) {
//建立郵件傳送伺服器
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.qq.com");
// mailSender.setPort(465);
mailSender.setUsername("[email protected]");
mailSender.setPassword("");
//加認證機制
Properties javaMailProperties = new Properties();
javaMailProperties.put("mail.smtp.auth", true);
javaMailProperties.put("mail.smtp.starttls.enable", true);
javaMailProperties.put("mail.smtp.timeout", 5000);
mailSender.setJavaMailProperties(javaMailProperties);
//建立郵件內容
SimpleMailMessage message=new SimpleMailMessage();
message.setFrom("[email protected]");
message.setTo(email);
message.setSubject(subject);
message.setText(msg);
//傳送郵件
mailSender.send(message);
}