日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

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

文章目錄

    • 使用JAVA工具類進行郵件發(fā)送
  • 前言
  • 一、前期準(zhǔn)備工作
  • 二、使用步驟
    • 1.引入依賴
    • 2.進行發(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)易郵箱),這里分別介紹怎么進行開通smtp服務(wù)的。。

  • QQ郵箱開通SMTP服務(wù)
  • 使用QQ郵箱進行發(fā)送需要進行開通QQ郵箱的郵箱客戶端授權(quán)服務(wù),獲取郵箱的客戶端授權(quán)碼(設(shè)置——>賬戶——>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù))。


    2. 163郵箱開通SMTP服務(wù)


    二、使用步驟

    1.引入依賴

    進行發(fā)送郵件的工具類我使用的是Hutool包里面的MailUtil進行發(fā)送郵件的。附:Hutool的工具包里面還包含大量的其他的工具類,有時間的伙伴可以參考一下。

    <!-- 發(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.進行發(fā)送郵件

    下面這些參數(shù)我只是在application.yml配置里面進行隨便配置的參數(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ù)進行讀取到類中:

    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;}

    進行發(fā)送郵件模塊

    //引入發(fā)送郵件配置private final SendMailConfig sendMailConfig;public SendEmailServiceImpl(SendMailConfig sendMailConfig) {this.sendMailConfig = sendMailConfig;}/**** @author wanglianzeng* @description 開發(fā)過程中一般發(fā)送郵件的參數(shù)是進行加密傳參的,還有傳參的費控檢驗,這里不進行模擬;并且返回類型大多數(shù)是以枚舉的格式進行封裝的。* @date 2021/8/15 13:19* @return java.lang.String**/@Overridepublic String sendMail(){//采用異步發(fā)送,如果涉及一對多發(fā)送郵件,有時間的或者有興趣的同學(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ā)送郵件是否需要進行身份驗證mailAccount.setAuth(true);mailAccount.setUser(sendMailConfig.getMailFrom());mailAccount.setPort(sendMailConfig.getMailPort());mailAccount.setHost(sendMailConfig.getMailHost());return mailAccount;}

    發(fā)送郵件這里使用了工具類進行發(fā)送只供參考。實際開發(fā)中根據(jù)實際情況進行開發(fā)。

    總結(jié)

    以上是生活随笔為你收集整理的使用JAVA工具类进行邮件发送的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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