JavaMail郵件傳送在linux環境下不能傳送的問題解決
今天做一個傳送郵件的功能,在本機(Windows)環境下可以成功傳送郵件,但部署到Linux伺服器上後不能成功傳送,也不提示錯誤。
通過修改程式碼,將方法 Session.getDefaultInstance() 改為 Session.getInstance(),具體如下:
public class SimpleMailSender {
public SimpleMailSender() {
}
public boolean sendTextMail(MailSenderInfo mailInfo) {
System.out.println("555555!");
// 判斷是否需要身份認證
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()) {
// 如果需要身份認證,則建立一個密碼驗證器
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根據郵件會話屬性和密碼驗證器構造一個傳送郵件的session
// Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
Session sendMailSession = Session.getInstance(pro,authenticator);
try {
// 根據session建立一個郵件訊息
// 建立郵件傳送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 設定郵件訊息的傳送者
mailMessage.setFrom(from);
// 建立郵件的接收者地址,並設定到郵件訊息中
Address to = new InternetAddress(mailInfo.getToAddress());
mailMessage.setRecipient(Message.RecipientType.TO,to);
// 設定郵件訊息的主題
mailMessage.setSubject(mailInfo.getSubject());
// 設定郵件訊息傳送的時間
mailMessage.setSentDate(new Date());
// 設定郵件訊息的主要內容
String mailContent = mailInfo.getContent();
mailMessage.setText(mailContent);
// 傳送郵件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
}
getDefaultInstance() 和getInstance() 的應用:
session在建立時首先會去系統快取檔案中找是否有properties存在 ,如果存在則載入預設的properties ,如果不存在才載入使用者自己定義的properties 。
所以當一個應用為每個使用者獨立建立properties的時候,還是應該呼叫getInstance
相關文章
- javamail郵件傳送例子JavaAI
- 使用JavaMail傳送郵件JavaAI
- javamail傳送郵件(轉)JavaAI
- 在.NET(正式版)環境下傳送郵件 (轉)
- 解決Bugfree不能定期傳送統計郵件的問題
- JavaMail傳送郵件時常見錯誤JavaAI
- 傳送郵件出現問題
- 請教:如何解決JAVAMAIL傳送html格式郵件時的亂碼問題JavaAIHTML
- 郵件傳送
- 傳送郵件
- Springboot+Javamail實現郵件傳送Spring BootJavaAI
- 郵件的傳送
- JavaMail 保證郵件傳送成功的方法總結JavaAI
- 郵件傳送時的亂碼問題
- 怎麼傳送超大檔案?困擾已久的郵件大附件傳送問題解決了!
- JavaMail:java使用QQ郵箱傳送郵件簡單版。JavaAI
- 解決jenkins 傳送郵件圖片亂碼問題Jenkins
- [linux]linux傳送郵件Linux
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- JSP與JavaMail(4)---傳送HTML格式的郵件 (轉)JSJavaAIHTML
- Laravel 傳送郵件Laravel
- PHP傳送郵件PHP
- Django——郵件傳送Django
- java郵件傳送Java
- Laravel傳送郵件Laravel
- gmail傳送郵件AI
- Oracle郵件傳送Oracle
- java傳送郵件Java
- Powershell郵件傳送
- thinkphp 郵件傳送PHP
- centos 傳送郵件CentOS
- phpcms傳送郵件PHP
- Ubuntu的郵件傳送Ubuntu
- Jenkins環境搭建(8)-郵件未能正常傳送Jenkins
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- 使用Linux命令傳送郵件Linux
- linux formail 傳送html郵件LinuxORMAIHTML
- 請問 javamail 傳送程式編譯問題JavaAI編譯