JavaMail发送邮件中的AuthenticationFailedException异常解决

先附上代码

public class JavaMail {
    @Test
    public void func() throws MessagingException {
        Properties prop = new Properties();
        prop.setProperty("mail.host","smtp.163.com");
        prop.setProperty("mail.smtp.auth","true");

        Authenticator aut = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("yonghuming","mima");//由于涉及隐私就用拼音代替了

            }
        };

        Session session = Session.getInstance(prop,aut);
        MimeMessage msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress("[email protected]"));//sender

        msg.setRecipients(Message.RecipientType.TO,"[email protected]");//recipients
        msg.setSubject("这是一封测试邮件");
        msg.setContent("你猜猜看是啥","text/html;charset=utf-8");
        Transport.send(msg);
    }


测试过程中出现AuthenticationFailedException异常,但是通过在网页版上登录163邮箱,确认了自己的用户名密码是正确的,不知道为何抛出异常。后来发现是因为要给第三方授权,例如163邮箱利用qq邮箱的客户端来登录的话,就需要授权。

解决方案:登录163邮箱,点击设置,在客户端授权密码中点击开启,然后重置授权码,注意授权码只能由字母和数字构成。

JavaMail发送邮件中的AuthenticationFailedException异常解决_第1张图片

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("yonghuming","mima");//这里的密码即是授权密码

            }

 
  

你可能感兴趣的:(JavaWeb,java)