springboot发送邮件和定时发送邮件

5 篇文章 0 订阅
4 篇文章 0 订阅

创建springboot项目

在这里插入图片描述在这里插入图片描述在这里插入图片描述在搜索框里搜索一下mail 选择红色圈圈标记的 就可以下一步了

编写配置文件

在这里插入图片描述

实现发送邮件和定时发送

启动类上加上@EnableScheduling @EnableAsync项目里我没用所以加不加都可以

@SpringBootApplication
@EnableAsync         //启用spring异步方法执行功能
@EnableScheduling    //启用spring定时任务
public class MailApplication {
    public static void main(String[] args) {
        SpringApplication.run(MailApplication.class, args);
    }
}

编写发送邮件的实现代码类

@Service
public class SendMail {
    private final Logger logger= LoggerFactory.getLogger(this.getClass());

    @Autowired
    private JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    private String from;

    /**
     * 发送纯文本邮件
     * @param to            邮件接收方
     * @param subject       邮件主题
     * @param text          邮件内容
     */

    public void sendTextMail(String to,String subject,String text){
        SimpleMailMessage simpleMailMessage=new SimpleMailMessage();
        simpleMailMessage.setFrom(from);
        simpleMailMessage.setTo(to);
        /*
        * 如果想给多个人发邮件   在后面接着添加  simpleMailMessage.setTo(xx@qq.com);  simpleMailMessage.setTo(yy@qq.com);
        * */
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setText(text);
        try {
            javaMailSender.send(simpleMailMessage);
            logger.info("邮件已发送");
        }catch (Exception e){
            e.printStackTrace();
            logger.error("邮件发送失败-"+e.getMessage());
        }

    }

    /**
     * 发送带附件的邮件
     * @param to            邮件接收方
     * @param subject       邮件主题
     * @param text          邮件内容
     * @param path          附件所在的文件路径
     */
    public void sendAttachmentMail(String to,String subject,String text,String path){
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        try {
           //创建一个multipart格式的message
            MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(text,true);
            //添加附件信息
            FileSystemResource file=new FileSystemResource(new File(path));
            String fileName = path.substring(path.lastIndexOf(File.separator));
            mimeMessageHelper.addAttachment(fileName,file);
            // 发送带附件的邮件
            javaMailSender.send(mimeMessage);
            logger.info("邮件发送成功");
        }catch (Exception e){
            e.printStackTrace();
            logger.error("带有附件的邮件发送失败。" + e.getMessage());
        }
    }
}   

编写测试类 可以使用单元测试 也可以定时发送 加上@Scheduled注解启动服务器就可以实现定时发送,我这里是30秒发送一次

@SpringBootTest
@RunWith(SpringRunner.class)
@Service
public class SendMailTest {

    @Autowired
    private SendMail sendMail;

    private String toEmail="要发送到的邮箱";
   

    /*
    发送普通邮件
    @Test
    @Scheduled(cron="0/30 * * * * ?")
    public void sendTextMail(){
        sendMail.sendTextMail(toEmail,"邮件主题","邮件内容");
    }*/

    //发送带附件的邮件
    @Test   //为了单元测试才加的   对定时没有影响
    @Scheduled(cron="0/30 * * * * ?")
    public void sendAttachmentMail(){
        sendMail.sendAttachmentMail(toEmail,"邮件主题","邮件内容","文件路径");
    }
}

开启发送邮件的协议

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值