使用JAVA工具类进行邮件发送
生活随笔
收集整理的這篇文章主要介紹了
使用JAVA工具类进行邮件发送
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
使用JAVA工具類進(jìn)行郵件發(fā)送
使用JAVA工具類進(jìn)行郵件發(fā)送
文章目錄
- 使用JAVA工具類進(jìn)行郵件發(fā)送
- 前言
- 一、前期準(zhǔn)備工作
- 二、使用步驟
- 1.引入依賴
- 2.進(jìn)行發(fā)送郵件
前言
提示:我們?cè)陂_發(fā)過程中,經(jīng)常遇到發(fā)送郵件的需求,我們往往需要考慮怎么去開發(fā),考慮關(guān)于郵件的兼容性,很多讓人煩惱的關(guān)聯(lián)事務(wù)。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、前期準(zhǔn)備工作
準(zhǔn)備賬號(hào)開通支持smtp發(fā)送服務(wù)
大部分使用的郵箱有兩種(QQ郵箱和163網(wǎng)易郵箱),這里分別介紹怎么進(jìn)行開通smtp服務(wù)的。。
2. 163郵箱開通SMTP服務(wù)
二、使用步驟
1.引入依賴
進(jìn)行發(fā)送郵件的工具類我使用的是Hutool包里面的MailUtil進(jìn)行發(fā)送郵件的。附:Hutool的工具包里面還包含大量的其他的工具類,有時(shí)間的伙伴可以參考一下。
<!-- 發(fā)送郵件引入的依賴 --><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.進(jìn)行發(fā)送郵件
下面這些參數(shù)我只是在application.yml配置里面進(jìn)行隨便配置的參數(shù),實(shí)際開發(fā)中可以轉(zhuǎn)化為傳參。
sendMail:config:mailFrom: 3175924***@QQ.commailTo: wlz1385137****@163.commailHost: smtp.qq.com #mailHost: smtp.163.commailPort: 465 #QQ的SSL傳輸端口是465/987,TCP的587 163的SSL 465/994 TCP:20mailPass: jzlqdadpzknf**** #申請(qǐng)的POM/Smtp的授權(quán)碼mailTitle: 郵件發(fā)送的標(biāo)題mailContent: 郵件發(fā)送的正文mailFile: D:\\Chrome_download\\發(fā)送郵件的附件.pdf #附件格式不受限制,但是多大的附件沒有試過。將參數(shù)進(jìn)行讀取到類中:
import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component;/*** @ program: extis-second* @ description: 發(fā)送郵件配置模擬發(fā)送郵件參數(shù)* @ author: wanglianzeng* @ create: 2021-08-06 16:46**/ @Configuration @Component @Data public 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;}進(jìn)行發(fā)送郵件模塊
//引入發(fā)送郵件配置private final SendMailConfig sendMailConfig;public SendEmailServiceImpl(SendMailConfig sendMailConfig) {this.sendMailConfig = sendMailConfig;}/**** @author wanglianzeng* @description 開發(fā)過程中一般發(fā)送郵件的參數(shù)是進(jìn)行加密傳參的,還有傳參的費(fèi)控檢驗(yàn),這里不進(jìn)行模擬;并且返回類型大多數(shù)是以枚舉的格式進(jìn)行封裝的。* @date 2021/8/15 13:19* @return java.lang.String**/@Overridepublic String sendMail(){//采用異步發(fā)送,如果涉及一對(duì)多發(fā)送郵件,有時(shí)間的或者有興趣的同學(xué)可以研究一下并行異步CompletableFuture.supplyAsync()ThreadUtil.execute(()->{MailAccount mailAccount = creatMailAccount();//讀取附件,一般發(fā)送的附件也是通過傳參File file = FileUtil.file(sendMailConfig.getMailFile());try {//參數(shù)分別為:組裝的發(fā)送郵件信息 郵件接收人郵箱 郵件的主題 郵件的正文 是否是頁面 附件String result = MailUtil.send(mailAccount, sendMailConfig.getMailTo(),sendMailConfig.getMailTitle(), sendMailConfig.getMailContent(), true, file);log.info("發(fā)送一件的結(jié)果是result=[{}]",result);return result;}catch (Exception e){if (e instanceof MailException) {final Throwable cause = e.getCause();if (cause instanceof SendFailedException) {log.error("收件人地址無效,請(qǐng)確認(rèn)收件人");}}}return "發(fā)送異常";});}/**** @author wanglianzeng* @description 發(fā)送郵件承載體* @date 2021/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()+">");//發(fā)送郵件是否需要進(jìn)行身份驗(yàn)證mailAccount.setAuth(true);mailAccount.setUser(sendMailConfig.getMailFrom());mailAccount.setPort(sendMailConfig.getMailPort());mailAccount.setHost(sendMailConfig.getMailHost());return mailAccount;}發(fā)送郵件這里使用了工具類進(jìn)行發(fā)送只供參考。實(shí)際開發(fā)中根據(jù)實(shí)際情況進(jìn)行開發(fā)。
總結(jié)
以上是生活随笔為你收集整理的使用JAVA工具类进行邮件发送的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新生儿上户口流程
- 下一篇: scipy连续小波变换