Java实现发送邮件(定时自动发送邮件)

系列文章目录

Redis缓存穿透、击穿、雪崩问题及解决方法
Spring Cache的使用–快速上手篇
分页查询–Java项目实战篇
全局异常处理–Java实战项目篇
该系列文章持续更新,更多的文章请点击我的主页查看哦!


文章目录

目录

系列文章目录

文章目录

前言

一、开通服务

二、配置文件编写

 三、编写工具类

四、实现发送邮件

 五、效果图

六、定时发送邮件

6.1 @Scheduled()注解

6.2 @EnableScheduling注解

总结


前言

   在我们做项目时,有些需求需要通知其他人。比如在手机号获取验证码登录时,会发送短信给该用户去接收验证码从而进行身份确认进行安全登录。但有些时候是需要进行群发消息通知用户的,这个过程肯定不是认为的去发送,所以我们就用java来实现通知用户的邮件发送功能。

   至于为什么要发送QQ邮件通知用户,而不是使用短信等方式?想必对这方面有些了解的就知道短信服务是要开通服务的,就是需要交钱的(这个钱是根据具体发送短信的条数算的),这里对于收钱的我们就不演示了。都这么说了,大家肯定猜到了QQ邮件是免费的!没错啊,你没有听错,真的是免费的。很适合在校大学生在写项目时运用,毕竟白嫖才是最香的嘛!

所以这篇文章就来告诉大家怎么去使用java实现邮件发送和定时发送的功能。看完这篇文章后大家就可以使用java代码给自己的好朋友发送邮件,在好朋友面前展现自己的食力啦!


一、开通服务

在这里第一步需要进入QQ邮箱登录自己的邮箱账号去免费开通服务。没错,这个开通是免费的,大家可以放心开通。

第一步:在登录自己的QQ邮箱后,点击设置------》点击账户。具体操作如下图所示:

 第二步:下滑找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务点击开通,由于我已经开通过了,这里显示已开通的样子。如下图所示:

 注意:这里会给一个秘钥(就是开通后显示的一串英文),记得自己保存起来,在编写java代码时需要用到。

二、配置文件编写

这里我用properties编写,配置的是发送邮件人的信息。

#QQ邮箱邮件发送服务配置(固定写法)
spring.mail.host=smtp.qq.com
spring.mail.port=587

# 配置个人QQ账户和密码(密码是加密后的授权码)
spring.mail.username=这里是开通服务的邮箱号
spring.mail.password=这里是刚才开通服务的秘钥

 三、编写工具类

准备工作做完了,现在就需要我们编写工具类来实现发送了。当然在发送邮件之前别忘了导入spring提供的邮箱服务依赖。

<!-- mail邮件服务启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

导入依赖后就可以编写工具类了,在utils包下编写邮箱工具类。

1.首先要注入JavaMailSenderImpl发送邮件类,需要调用该类的send方法用来发送邮件。

2.发送的信息要封装到SimpleMailMessage()对象中。包括发送者、接受者、内容标题、内容。这四个部分。由于发送是需要秘钥的,所以刚才开通服务的邮件就可以作为发送者。接受者、内容标题、内容都可以作为参数传递过来。

3.这里的mailfrom就是使用@value注解赋值配置文件刚才配置的邮箱号。就是发送的邮箱号。

代码如下:

@Component
public class MailUtils {
    @Autowired
    private JavaMailSenderImpl mailSender;
    @Value("${spring.mail.username}")
    private String mailfrom;

    // 发送简单邮件
    public void sendSimpleEmail(String mailto, String title, String content) {
        //  定制邮件发送内容
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(mailfrom);
        message.setTo(mailto);
        message.setSubject(title);
        message.setText(content);
        // 发送邮件
        mailSender.send(message);
    }
}

四、实现发送邮件

 工具类已经写好了,我们就可以调用该方法传递参数发送邮件了。

@Autowired
    private MailUtils mailUtils;

    // mailto 发送给谁?
    private String mailto="";

    
    @GetMapping("/email")
    public void sendEmail(){
       
            //  定制邮件内容
            StringBuffer content = new StringBuffer();
            content.append("心态还需努力呀~").append("\n");
         

            //三个参数、1.接收者  2.邮件标题  3.发送的内容
            mailUtils.sendSimpleEmail(接收者,邮件标题,发送的内容);

        }

 五、效果图

这里为了展示效果,我就自己给自己发送一个邮件:

 当访问Controller接口时,这里就接收到我自己给自己发送过来的邮件。

六、定时发送邮件

6.1 @Scheduled()注解

定时发送需要在发送的方法上加上@Scheduled()注解

@Scheduled()参数可以是这样的格式:

里面有6个参数:

从左到右用空格隔开分别是:秒 分 时 日 月 周 年(可省略)

第一个位置:Seconds 秒:区间 0-59 秒,代表一分钟内的秒数。

第二个位置:Minutes 分:区间 0-59 分,代表一小时内的分钟数。

第三个位置:Hours 时:区间 0-23 时,代表一天中的小时数。

第四个位置:Day of month 日:区间 1-31 (?根据每月有多少天来),代表一月中的多少号。

第五个位置:Month 月:区间 1-12 ,代表一年中的月份。

第六个位置:Day of week 周:区间 1-7或者英文星期的缩写,代表星期几。

//表示每月二号的十点定时执行下面的方法。所以就可实现定时发送功能。
@Scheduled(cron = "0 0 10 2 * ?")

6.2 @EnableScheduling注解

然后在启动类上加上@EnableScheduling注解

@EnableScheduling  // 开启定时任务注解功能支持


总结

到这里发送邮件的功能的代码实现和操作步骤就都演示完了,赶快去给你的好朋友展示自己的食力去吧。该功能整体没有什么特别难以理解的点。是实现自己的练习项目,大作业不错的一个功能可选。也可作为毕设的一部分。大家赶快练起来吧。

 最后也是写文章快一年了,我的朋友数量也是突破了1万,在这过程中有和我一起走过来的小伙伴,也有在半路就退出的,没有在继续写文章。可能也是由于生活比较的忙碌。大家都是在以不同的方式学习,生活。在这里感谢大家对我的陪伴与支持,以后还会继续分享知识点和大家一起讨论,交流。

 看到这里了,如果这篇文章对你有帮助的话可以给我点个免费的赞在离开哦!

猜你喜欢

转载自blog.csdn.net/weixin_52258054/article/details/130224929
今日推荐