第一次使用java mail 写发邮件的程序,我是使用maven来构建依赖的
这里不描述怎么使用java mail发邮件,主要描述如何使用exchange .由于公司邮箱是用的是exchange ,我百度好久也没有合适的说明使用,绕了好多弯路,故在此记录,以便他人少走弯路。
我在一篇文章中发现exchange邮箱需要加域,一般都是domainusername,但是使用后发现会报“AuthenticationFailedException: 535 5.7.3 Authentication unsuccessful”用户名密码错误,找了好久没有办法解决,但是从本质上想,想有没有“域”的参数,找来找去找到的相应的api。
http://www.yiibai.com/javamail_api/javamail_api_smtp_servers.html
需要添加mail.smtp.auth.ntlm.domain参数,
props.setProperty("mail.smtp.auth.ntlm.domain", domain);果然一试就成功了。
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
package tool.mail;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
*
* 服务器邮箱登录验证
*
*/
public class MailAuthenticator extends Authenticator {
/**
*
* 用户名(登录邮箱)
*/
private String username;
/**
* 密码
*/
private String password;
/**
*
* 初始化邮箱和密码
*
* @param username
* 邮箱
*
* @param password
* 密码
*/
public MailAuthenticator(String username, String password) {
this.username = username;
this.password = password;
}
String getPassword() {
return password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
String getUsername() {
return username;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
}