授权码的问题——我是授权码大小写搞错了,改过来就可以了。
注意:授权码不是密码,而是代替密码的一组独立密码,可以理解为第二把开启邮箱的钥匙。
第一次的话要获取授权码,手机验证。
已经有的话就不用了。有些有时效性。
这个是验证没通过,一般需要检查一下以下几点:
1、你的用户名和授权码是否正确
2、你的邮箱服务是否是你的的发送邮箱
再介绍一些异常:
原因是你没有设置qq的加密方式,加上这句就OK了530 Error: A secure connection is requiered(such as ssl)错误
props.put(“mail.smtp.ssl.enable”, “true”);//QQ邮箱的SSL加密
这是因为你的fromEmail(发件人)和tran.connect(邮件发送对象)使用的邮箱不一致,解决办法:保持一致501 mail from address must be same as authorization user
连接邮件对象使用的不是16位的授权码,得到授权码赋值535 Error:ÇëʹÓÃÊÚȨÂëµÇ¼¡£ÏêÇéÇë¿´http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
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);
}
}
效果截图