2012年4月18日 星期三

透過 Exchange Server 用 JavaMail 寄信

跟之前不同的地方在於,要透過 Exchange Server 好像必須提供 Authenticator,程式碼必須修改以下的部份:


1、 增加 Authenticator

// Authenticator used for creating mail session
public class SMTPAuthenticator extends javax.mail.Authenticator {
  private String fUser = null;
  private String fPassword = null;

  public SMTPAuthenticator(String user, String password) {
    fUser = user;
    fPassword = password;
  }

  public PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(fUser, fPassword);
  }
}

2、要寄信時,產生 Mail Session 必須附上 Authenticator 作為引數

// Initial properties
java.util.Properties props = null;
..........
// Initial Authenticator
javax.mail.Authenticator smtpAuthenticator = new SMTPAuthenticator("account", "password");
// Put Properties and Authenticator as parameters for crating Mail Session
javax.mail.Session mailSession = javax.mail.Session.getInstance(props, smtpAuthenticator);

另外根據官方文件的說明,登入的帳號可能必須輸入 domain_name/windows_account/mail_account 這樣的形式才能正確通過 Exchange Server 的帳號驗證。

2012/06/15 補充:
在我們去國內某間大公司 debug 的經驗..他們內部是用 Exchange Server,不過不知道哪個版本
登入時是用 domain_name/mail_account 作為登入帳號才可以正常用 JavaMail 連接 Exchange Server。

沒有留言: