快捷搜索: 王者荣耀 脱发

java mail 使用:exchange邮箱

第一次使用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;
    }

}
经验分享 程序员 微信小程序 职场和发展