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("yonghuming@163.com"));//sender

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


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

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

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

            }

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值