JavaWEB用Spring内置的邮件封装类来发送邮件

在项目中经常会有类似这样的功能,注册账号需要验证(现在大多用的手机验证),但是绑定邮箱的时候也是需要验证的,这时候就需要用到邮件发送的功能,spring-context-support就有内置了一个邮件发送包装类,下面是发送邮件的一个简单实例的具体步骤。

1.准备两个邮箱,并且进行设置

首先准备两个邮箱,一个是用来发件的邮箱,一个是用来收件的邮箱。这里以QQ邮箱和新浪邮箱为例。我把QQ邮箱作为发件邮箱,新浪邮箱设为收件邮箱。

作为发件邮箱的QQ邮箱,先要在账号设置中开启IMAP/SMTP服务。具体过程如下:

①登录QQ邮箱,到达主界面,在左上角找到如图所在,点击设置

②在导航栏中选择账户,然后往下滑找到 - POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,随后点击开启(我这里是已经开启了),进行一系列验证操作之后,就会得到一个16位的授权码,把这个授权码保存好。

JavaWEB用Spring内置的邮件封装类来发送邮件_第1张图片

JavaWEB用Spring内置的邮件封装类来发送邮件_第2张图片

 

2.创建一个MAVEN项目,在pom.xml中添加依赖


      org.springframework
      spring-context-support
      4.3.7.RELEASE


      javax.mail
      mail
      1.4.7

3.新建一个class,编写一段简单的测试代码

import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;

class TestSpringSendEmail {

    public static void main(String[] args) {
        sendTextEmail();
    }

    public static void sendTextEmail() {
        //邮件封装类部分
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.qq.com"); //这里用的是QQ邮箱SMTP发送服务器地址
        //mailSender.setPort(25);   这里实测不填端口号也行,如果不行的话加上试试
        mailSender.setUsername("[email protected]");  //这里填你自己的账号
        mailSender.setPassword("aaaaaaaaaaaaaaaa");  //这里填写刚刚申请到的16位授权码

        //邮件信息部分
        SimpleMailMessage msg = new SimpleMailMessage();
        msg.setFrom("[email protected]"); // 发件人邮箱
        msg.setTo("[email protected]"); // 收件人邮箱
        msg.setSubject("Spring邮件发送测试"); // 邮件标题
        msg.setText("本次操作的验证码为:666666,请妥善保管,不要轻易告诉他人,如果非您本人操作,请立即与我们联系:xxxxxxxxxxx");//邮件内容
        try {
            mailSender.send(msg);
            System.out.println("发送成功!");
        } catch (MailException e) {
            e.printStackTrace();
        }
    }
}

代码主要分成两个部分,一个就是邮件封装类部分,还有一个就是发送邮件信息内容的部分,然后直接执行代码,不出意外的话就能在收件方收到邮件了。效果如下:

JavaWEB用Spring内置的邮件封装类来发送邮件_第3张图片

这边再做一些补充,有些邮箱开启SMTP服务之后可能没有给授权码,这时候mailSender.setPassword那边就需要填自己本人邮箱的密码了。

 

4.异常处理

假如有遇到javax.mail.AuthenticationFailedException异常的话,那就先检查一下自己语句中的账号密码有没有搞错,我测试的时候就有不小心把我新浪邮箱的@sina写成了@qq。如果账号密码都没错的话,试试去登录一下自己的邮箱,然后发一封邮件看看能不能成功,如果上面都检查过了,应该就不会出现这个异常了。

你可能感兴趣的:(JavaWEB用Spring内置的邮件封装类来发送邮件)