多语言展示
当前在线:392今日阅读:103今日分享:49

Java的邮件发送及其异常处理

在Java EE 项目中,广泛的使用到了邮件发送这个功能模块,由此可见,掌握邮件发送对于开发人员来说是至关重要的。
工具/原料
1

spring系列的java EE STS开发工具或者其他JavaEE开发工具

2

maven(可以不使用,因为我建立的是maven项目,所以配置maven)

3

163邮箱

方法/步骤
1

1.引入邮件发送的jar包如果建立的是Maven项目,那么在pom.xml文件中引入依赖          1.4.1                        javax.mail            mail            ${javamail.version}           如果建立的不是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 failedjavax.mail.AuthenticationFailedException at javax.mail.Service.connect(Service.java:319)当执行测试方法的时候会出现以上的异常异常分析:从异常提示信息中,可以知道属于验证异常从而导致的邮箱服务器连接异常那么可以从中分析出原因:1.用户名错误2.密码错误异常排除:使用测试的用户名和密码去登陆,将登陆成功的用户名和密码放入测试方法中,依然是上面的错误

5

开启客户端的授权密码从第四步中,可以知道用户名没有错误,那么只能是密码出错了,其原因是163邮件服务器存在另外的一个密码叫做客户端授权密码,而在邮件发送的工具类中的密码就是授权密码,所以需要登陆到163邮箱,开启客户端的授权密码,授权密码和登陆密码不能相同

6

6.查看是否收到邮件,核对发送的内容是否正确

注意事项

一定要学会分析问题,不要盲目找解决的方法

推荐信息