本文共 1470 字,大约阅读时间需要 4 分钟。
这几天做一个服务器的监测,发送邮件。由于新申请了两个163邮箱账号,用于测试,总是提示不被授权。报出以下错误:
avax.mail.AuthenticationFailedException,经过网上查找很多资料,都不能实际解决问题。自己使用以前(通过手机验证)申请经过验证后的邮箱,就可以发送到邮箱。
最终的原因是:以下两种
1.. 先用OutLook测试一下看能否进行正常的收发邮件.是否是from的email地址和Authenticator类中验证的用户名和密码是否正确,要不也会出错.
System.out.println("发送邮箱:"+fromEmail); System.out.println("接收邮箱:"+toEmail); System.out.println("163邮箱登录名:"+emailName); System.out.println("密码:"+emailPassword); System.out.println("发送原因:"+title); System.out.println("发送内容:"+centent); Properties properties = new Properties();// 创建Properties对象 properties.setProperty("mail.transport.protocol", "smtp");// 设置传输协议 properties.put("mail.smtp.host", "smtp.163.com");// 设置发信邮箱的smtp地址 properties.setProperty("mail.smtp.auth", "true"); // 验证 //使用验证,创建一个Authenticator Authenticator auth = new AjavaAuthenticator(emailName, emailPassword); //根据Properties,Authenticator创建Session Session session = Session.getDefaultInstance(properties, auth); Message message = new MimeMessage(session);// Message存储发送的电子邮件信息 message.setFrom(new InternetAddress(fromEmail)); message.setRecipient(Message.RecipientType.TO, new InternetAddress( toEmail));// 设置收信邮箱 // 指定邮箱内容及ContentType和编码方式 message.setContent(centent, "text/html;charset=utf-8"); message.setSubject(title);// 设置主题 message.setSentDate(new Date());// 设置发信时间 Transport.send(message);
2. 在用户名和密码都没有问题的情况下,如果代码抛出javax.mail.AuthenticationFailedException异常,
如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的。
例如163.com在我进行代码测试时,刚刚注册的帐号是没有权限使用该功能的,所以就会抛出上述的异常。
转载地址:http://bbjdi.baihongyu.com/