使用javax.mail的jar包进行163邮箱发送邮件,报错AuthenticationFailedException: 550 User has no permission

一、开启163邮箱的POP3/SMTP服务

在这里插入图片描述

二、将163邮箱的登录密码修改为授权码

163邮箱的登录密码是在163官方网站、客户端使用,授权码是在第三方的客户端使用。通过javax.mail发送邮件肯定不是163的官方客户端鸭!
在这里插入图片描述

三、检测一下代码问题

package cn.hestyle.bookstore.utils;


import java.util.Properties;

import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 
 * @author hestyle
 * 
 * SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议
 * 》SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器
 * POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本
 * 》POP3服务器则是遵循POP3协议的接收邮件服务器
 */
public class SendJMail {
	private static final String smtpHost = "smtp.163.com";//163邮箱的smtp服务器地址
	private static final String from = "he_style@163.com";//邮件发送人的邮件地址
	private static final String username = "he_style@163.com";//发件人的邮件帐户
	private static final String password = "xxxxx";//发件人的授权码
	
	public static boolean sendMail(String email, String emailMsg) {
		String to = email;// 邮件接收人的邮件地址
		//定义Properties对象,设置环境信息
		Properties props = System.getProperties();

		//设置邮件服务器的地址
		//指定的smtp服务器
		props.setProperty("mail.smtp.host", smtpHost);
		props.setProperty("mail.smtp.auth", "true");
		//设置发送邮件使用的协议
		props.setProperty("mail.transport.protocol", "smtp");
		//创建Session对象,session对象表示整个邮件的环境信息
		Session session = Session.getInstance(props);
		//设置输出调试信息
		session.setDebug(true);
		try {
			//Message的实例对象表示一封电子邮件
			MimeMessage message = new MimeMessage(session);
			//设置发件人的地址
			message.setFrom(new InternetAddress(from));
			//设置主题
			message.setSubject("用户激活");
			//设置邮件的文本内容
			//message.setText("Welcome to JavaMail World!");
			message.setContent((emailMsg),"text/html;charset=utf-8");
			
			//设置附件
			//message.setDataHandler(dh);
			
			//从session的环境中获取发送邮件的对象
			Transport transport=session.getTransport();
			//连接邮件服务器
			transport.connect(smtpHost, 25, username, password);
			//设置收件人地址,并发送消息
			transport.sendMessage(message,new Address[]{new InternetAddress(to)});
			transport.close();
			return true;
		} catch (MessagingException e) {
			e.printStackTrace();
			return false;
		}
	}
}

以上就是解决JavaMail的方法。
附上成功图:
控制台输出:
在这里插入图片描述
在这里插入图片描述

Logo

一站式 AI 云服务平台

更多推荐