Java的邮件发送及其异常处理
1、1.引入邮件发送的jar包
如果建立的是Maven项目,那么在pom.xml文件中引入依赖
<properties>
<javamail.version>1.4.1</javamail.version>
</properties>
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>${javamail.version}</version>
</dependency>
<dependencies>
如果建立的不是Maven项目,那么需要webh中引入
javax.mail-1.5.1.jar
2、2.建立邮件发送的工具类
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;
import org.junit.Test;
public class SendMail {
public static boolean sendMail(String email, String emailMsg) {
String from = "58_1@163.com";
// 邮件发送人的邮件地"
String to = email;
// 邮件接收人的邮件地址
final String username = "58_1@163.com";
// 发件人的邮件帐户
final String password = "123";
// 发件人的邮件密码
// 定义Properties对象,设置环境信息
Properties props = System.getProperties();
// 设置邮件服务器的地址
props.setProperty("mail.smtp.host", "smtp.163.com");
// 指定smtp服务器
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");
// 从session的环境中获取发送邮件的对象
Transport transport = session.getTransport();
// 连接邮件服务器
transport.connect("smtp.163.com", 25, username, password);
// 设置收件人地址,并发送消息
transport.sendMessage(message, new Address[] { new InternetAddress(to) });
transport.close();
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
}
3、3.创建Junit的测试方法
@Test
public void testSendMail() {
SendMail.sendMail("m58_1@163.com","hello world!");
}
4、4.异常处理
535 Error: authentication failed
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
当执行测试方法的时候会出现以上的异常
异常分析:
从异常提示信息中,可以知道属于验证异常从而导致的邮箱服务器连接异常
那么可以从中分析出原因:
1.用户名错误
2.密码错误
异常排除:
使用测试的用户名和密码去登陆,将登陆成功的用户名和密码放入测试方法中,
依然是上面的错误
5、开启客户端的授权密码
从第四步中,可以知道用户名没有错误,那么只能是密码出错了,其原因是163邮件服务器存在另外的一个密码叫做客户端授权密码,而在邮件发送的工具类中的密码就是授权密码,所以需要登陆到163邮箱,开启客户端的授权密码,授权密码和登陆密码不能相同
6、6.查看是否收到邮件,核对发送的内容是否正确