javax.mail.AuthenticationFailedException: 535 authentication failed的问题

授权码的问题——我是授权码大小写搞错了,改过来就可以了。

注意:授权码不是密码,而是代替密码的一组独立密码,可以理解为第二把开启邮箱的钥匙。

第一次的话要获取授权码,手机验证。

已经有的话就不用了。有些有时效性。



这个是验证没通过,一般需要检查一下以下几点:
1、你的用户名和授权码是否正确

2、你的邮箱服务是否是你的的发送邮箱

再介绍一些异常:

  • 530 Error: A secure connection is requiered(such as ssl)错误
    原因是你没有设置qq的加密方式,加上这句就OK了
    props.put(“mail.smtp.ssl.enable”, “true”);//QQ邮箱的SSL加密
  • 501 mail from address must be same as authorization user
    这是因为你的fromEmail(发件人)和tran.connect(邮件发送对象)使用的邮箱不一致,解决办法:保持一致
  • 535 Error:ÇëʹÓÃÊÚȨÂëµÇ¼¡£ÏêÇéÇë¿´http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
    连接邮件对象使用的不是16位的授权码,得到授权码赋值
  • java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger 

      这是因为你导入的包只有api,没有包含sun的实现,重新导入javax.mail包即可。

package com.feihong.utils;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

public class MailUtils {

	public static void sendMail(String email, String emailMsg) throws AddressException, MessagingException {
		// 1.创建一个程序与邮件服务器会话对象 Session

		Properties props = new Properties();
		props.setProperty("mail.transport.protocol", "SMTP");
		props.setProperty("mail.host", "smtp.126.com");
		props.setProperty("mail.smtp.auth", "true");// 指定验证为true是否需要身份验证

		// 创建验证器
		Authenticator auth = new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				// 密码验证
				return new PasswordAuthentication("邮箱账号不包括@126.com之类的后缀", "授权码");
				
			}
		};

		Session session = Session.getInstance(props, auth);
		// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
		// 2.创建一个Message,它相当于是邮件内容
		Message message = new MimeMessage(session);

		message.setFrom(new InternetAddress("邮箱账号")); // 设置发送者

		message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者

		message.setSubject("用户激活");
		// message.setText("这是一封激活邮件,请<a href='#'>点击</a>");

		message.setContent(emailMsg, "text/html;charset=utf-8");

		// 3.创建 Transport用于将邮件发送

		Transport.send(message);
	}
}

效果截图




猜你喜欢

转载自blog.csdn.net/weixin_38465623/article/details/80789793
今日推荐