300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用JAVA工具类进行邮件发送

使用JAVA工具类进行邮件发送

时间:2019-09-04 04:04:19

相关推荐

使用JAVA工具类进行邮件发送

使用JAVA工具类进行邮件发送

使用JAVA工具类进行邮件发送

文章目录

使用JAVA工具类进行邮件发送前言一、前期准备工作二、使用步骤1.引入依赖2.进行发送邮件

前言

提示:我们在开发过程中,经常遇到发送邮件的需求,我们往往需要考虑怎么去开发,考虑关于邮件的兼容性,很多让人烦恼的关联事务。


提示:以下是本篇文章正文内容,下面案例可供参考

一、前期准备工作

准备账号开通支持smtp发送服务

大部分使用的邮箱有两种(QQ邮箱和163网易邮箱),这里分别介绍怎么进行开通smtp服务的。。

QQ邮箱开通SMTP服务

使用QQ邮箱进行发送需要进行开通QQ邮箱的邮箱客户端授权服务,获取邮箱的客户端授权码(设置——>账户——>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务)。

2. 163邮箱开通SMTP服务

二、使用步骤

1.引入依赖

进行发送邮件的工具类我使用的是Hutool包里面的MailUtil进行发送邮件的。附:Hutool的工具包里面还包含大量的其他的工具类,有时间的伙伴可以参考一下。

<!-- 发送邮件引入的依赖 --><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency><!-- 使用工具类 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.7</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version><scope>provided</scope></dependency>

2.进行发送邮件

下面这些参数我只是在application.yml配置里面进行随便配置的参数,实际开发中可以转化为传参。

sendMail:config:mailFrom: 3175924***@mailTo: wlz1385137****@mailHost: #mailHost: mailPort: 465 #QQ的SSL传输端口是465/987,TCP的587 163的SSL 465/994 TCP:20mailPass: jzlqdadpzknf**** #申请的POM/Smtp的授权码mailTitle: 邮件发送的标题mailContent: 邮件发送的正文mailFile: D:\\Chrome_download\\发送邮件的附件.pdf #附件格式不受限制,但是多大的附件没有试过。

将参数进行读取到类中:

import lombok.Data;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Configuration;import org.ponent;/*** @ program: extis-second* @ description: 发送邮件配置模拟发送邮件参数* @ author: wanglianzeng* @ create: -08-06 16:46**/@Configuration@Component@Datapublic class SendMailConfig {@Value("${sendMail.config.mailFrom}")private String mailFrom;@Value("${sendMail.config.mailTo}")private String mailTo;@Value("${sendMail.config.mailHost}")private String mailHost;@Value("${sendMail.config.mailPort}")private Integer mailPort;@Value("${sendMail.config.mailPass}")private String mailPass;@Value("${sendMail.config.mailTitle}")private String mailTitle;@Value("${sendMail.config.mailContent}")private String mailContent;@Value("${sendMail.config.mailFile}")private String mailFile;}

进行发送邮件模块

//引入发送邮件配置private final SendMailConfig sendMailConfig;public SendEmailServiceImpl(SendMailConfig sendMailConfig) {this.sendMailConfig = sendMailConfig;}/**** @author wanglianzeng* @description 开发过程中一般发送邮件的参数是进行加密传参的,还有传参的费控检验,这里不进行模拟;并且返回类型大多数是以枚举的格式进行封装的。* @date /8/15 13:19* @return java.lang.String**/@Overridepublic String sendMail(){//采用异步发送,如果涉及一对多发送邮件,有时间的或者有兴趣的同学可以研究一下并行异步CompletableFuture.supplyAsync()ThreadUtil.execute(()->{MailAccount mailAccount = creatMailAccount();//读取附件,一般发送的附件也是通过传参File file = FileUtil.file(sendMailConfig.getMailFile());try {//参数分别为:组装的发送邮件信息 邮件接收人邮箱 邮件的主题 邮件的正文 是否是页面 附件String result = MailUtil.send(mailAccount, sendMailConfig.getMailTo(),sendMailConfig.getMailTitle(), sendMailConfig.getMailContent(), true, file);log.info("发送一件的结果是result=[{}]",result);return result;}catch (Exception e){if (e instanceof MailException) {final Throwable cause = e.getCause();if (cause instanceof SendFailedException) {log.error("收件人地址无效,请确认收件人");}}}return "发送异常";});}/**** @author wanglianzeng* @description 发送邮件承载体* @date /8/15 13:50* @return cn.hutool.extra.mail.MailAccount**/private MailAccount creatMailAccount() {MailAccount mailAccount = new MailAccount();mailAccount.setPass(sendMailConfig.getMailPass());mailAccount.setFrom("test<"+sendMailConfig.getMailFrom()+">");//发送邮件是否需要进行身份验证mailAccount.setAuth(true);mailAccount.setUser(sendMailConfig.getMailFrom());mailAccount.setPort(sendMailConfig.getMailPort());mailAccount.setHost(sendMailConfig.getMailHost());return mailAccount;}

发送邮件这里使用了工具类进行发送只供参考。实际开发中根据实际情况进行开发。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。