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

2025-10-20 02:43:10

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.查看是否收到邮件,核对发送的内容是否正确

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢