日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時(shí)間:2024/3/26 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用JAVA工具类进行邮件发送 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用JAVA工具類進(jìn)行郵件發(fā)送

使用JAVA工具類進(jìn)行郵件發(fā)送

文章目錄

    • 使用JAVA工具類進(jìn)行郵件發(fā)送
  • 前言
  • 一、前期準(zhǔn)備工作
  • 二、使用步驟
    • 1.引入依賴
    • 2.進(jìn)行發(fā)送郵件


前言

提示:我們在開發(fā)過程中,經(jīng)常遇到發(fā)送郵件的需求,我們往往需要考慮怎么去開發(fā),考慮關(guān)于郵件的兼容性,很多讓人煩惱的關(guān)聯(lián)事務(wù)。


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、前期準(zhǔn)備工作

準(zhǔn)備賬號開通支持smtp發(fā)送服務(wù)
大部分使用的郵箱有兩種(QQ郵箱和163網(wǎng)易郵箱),這里分別介紹怎么進(jìn)行開通smtp服務(wù)的。。

  • QQ郵箱開通SMTP服務(wù)
  • 使用QQ郵箱進(jìn)行發(fā)送需要進(jìn)行開通QQ郵箱的郵箱客戶端授權(quán)服務(wù),獲取郵箱的客戶端授權(quán)碼(設(shè)置——>賬戶——>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(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**** #申請的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ā)送,如果涉及一對多發(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("收件人地址無效,請確認(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工具类进行邮件发送的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。