1. 需要用的包jar包  javaMail; 可以从GIT上下载,我这里用到的1.6 

    https://github.com/javaee/javamail/releases

2. 开启163的授权码,进入到如下图,按照上面显示的操作就行了


 特别说明: 使用发送和认证的邮箱要是同一个,而且这个邮箱最好不是刚注册的,否则测试的时候会出问题;

如果出现554错误,建议换一个有使用一年或是多久的账号再来测试


3. 源码(把自己的测试邮箱等内容填上去,就可以用了)

package email;

import java.util.Date;
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;

public class FinalTest_163 {
	// 发件人 账号和密码
	public static final String MY_EMAIL_ACCOUNT = "你自己的邮箱@163.com";
	public static final String MY_EMAIL_PASSWORD = "授权密码";// 密码,是你自己的设置的授权码
	
	// SMTP服务器(这里用的163 SMTP服务器)
	public static final String MEAIL_163_SMTP_HOST = "smtp.163.com";
	public static final String SMTP_163_PORT = "25";// 端口号,这个是163使用到的;QQ的应该是465或者875
	
	// 收件人
	public static final String RECEIVE_EMAIL_ACCOUNT = "收件人邮箱@163.com";
	
	public static void main(String[] args) throws AddressException, MessagingException {
		Properties p = new Properties();
		p.setProperty("mail.smtp.host", MEAIL_163_SMTP_HOST);
		p.setProperty("mail.smtp.port", SMTP_163_PORT);
		p.setProperty("mail.smtp.socketFactory.port", SMTP_163_PORT);
		p.setProperty("mail.smtp.auth", "true");
		p.setProperty("mail.smtp.socketFactory.class", "SSL_FACTORY");
		
		Session session = Session.getInstance(p, new Authenticator() {
			// 设置认证账户信息
			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(MY_EMAIL_ACCOUNT, MY_EMAIL_PASSWORD);
			}
		});
		session.setDebug(true);
		System.out.println("创建邮件");
		MimeMessage message = new MimeMessage(session);
		// 发件人
		message.setFrom(new InternetAddress(MY_EMAIL_ACCOUNT));
		// 收件人和抄送人
		message.setRecipients(Message.RecipientType.TO, RECEIVE_EMAIL_ACCOUNT);
//		message.setRecipients(Message.RecipientType.CC, MY_EMAIL_ACCOUNT);
		
		// 内容(这个内容还不能乱写,有可能会被SMTP拒绝掉;多试几次吧)
		message.setSubject("包裹");
		message.setContent("<h1>李总,您好;你的包裹在前台</h1>", "text/html;charset=UTF-8");
		message.setSentDate(new Date());
		message.saveChanges();
		System.out.println("准备发送");
		Transport.send(message);
	}
}

一个简单的错误码: 535 Error: authentication failed, 这个再仔细检查下你的账号和授权码时候正确且匹配;

最后效果图:

    

    


































Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐