package reedfan.mail;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.junit.Test;
public class SendMailDemo {
//发一封最简单的邮件
@Test
public void sendMail() throws Exception{
//第一步:声明properties对象放信息
Properties prop = new Properties();
//设置连接哪一台服务器
prop.setProperty("mail.host","smtp.163.com");
//设置是否验证
prop.setProperty("mail.smtp.auth", "true");
//第二步:声明用户名和密码
Authenticator auth = new Authenticator() {
//此访求返回用户和密码的对象
public PasswordAuthentication getPasswordAuthentication() {
PasswordAuthentication pa =
new PasswordAuthentication("m18915228146", "XXXX");//用户名和密码
return pa;
}
};
第二步:获取Session对象
Session session =
Session.getDefaultInstance(prop,auth);
//设置session的调试模式
session.setDebug(true);
//第三步:声明信息
MimeMessage mm1 =
new MimeMessage(session);
//第四步:设置发件人email
Address from = new InternetAddress("m18915228146@163.com");
mm1.setFrom(from);
//第五步:设置收件人
mm1.setRecipient(RecipientType.TO, new InternetAddress("1617950759@qq.com"));
//第六步:设置主题
mm1.setSubject("aaaaaa");
mm1.setContent("bbbbbb", "text/plain");
//第七步:
Transport.send(mm1);
}
}
需导入的jar包junit.jar activation.jar mail.jar可能遇到的问题
当传入发送邮箱正确的用户名和密码时,总是收到到:550 User has no permission这样的错误,
其实我们用Java发送邮件时相当于自定义客户端根据用户名和密码进行登录,然后使用SMTP服务发送邮件。但新注册的163邮件默认是不开启客户端授权验证的(对自定的邮箱大师客户端默认开启),
因此登录总是会被拒绝,验证没有权限。解决办法是进入163邮箱,进入邮箱中心——客户端授权密码,选择开启即可,如下截图