整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「快學springboot」使用springboot實現發送郵件功能

          在實際項目中,經常需要用到郵件通知功能。比如,用戶通過郵件注冊,通過郵件找回密碼等;又比如通過郵件發送系統情況,通過郵件發送報表信息等等,實際應用場景很多。這篇文章,就教大家通過springboot快速的實現一個發送郵件的功能。

          引入依賴

          在springboot項目中,引入如下依賴:

          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-mail</artifactId>
          </dependency>
          

          配置文件

          在springboot項目中引入依賴之后,即可在其配置文件中配置郵箱的參數:

          application.properties

          不同的郵箱,host的配置不一樣。如果是其它郵箱,搜索下即可找到。

          username為郵箱賬號,password為郵箱的授權碼(不是密碼,需要在郵箱的設置頁面中開啟smtp)。

          注入JavaMailSender實例

          郵箱參數配置完之后,即可直接注入JavaMailSender實例。

          @Autowired
          private JavaMailSender javaMailSender;
          

          發送普通郵件

          普通郵件,沒有樣式。實現起來最容易:

          @Test
          public void testSend() throws MessagingException {
           SimpleMailMessage message = new SimpleMailMessage();
           message.setFrom("發送者郵箱地址");
           message.setTo("接受者郵箱地址");
           message.setSubject("這是標題");
           message.setText("這是內容");
           javaMailSender.send(message);
          }
          

          From需要和配置文件中的username一致,否則會報錯。

          To為郵件接收者;

          Subject為郵件的標題;

          Text為郵件的內容。

          運行方法,即可收到郵件:

          發送HTML郵件

          很多時候,我們需要郵件帶有美觀的樣式。這時候,可以使用HTML的樣式。我們需要使用javaMailSender的createMimeMessage方法,構建一個MimeMessage,然后使用MimeMessage實例創建出MimeMessageHelper。如下:

          @Test
          public void testSend() throws MessagingException {
           MimeMessage mimeMessage = javaMailSender.createMimeMessage();
           MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
           messageHelper.setSubject("標題");
           messageHelper.setFrom("發送者郵箱地址");
           messageHelper.setTo("接受者郵箱地址");
           messageHelper.setText("<h1>標題</h1><br/><p>這是內容</p>", true);
           javaMailSender.send(messageHelper.getMimeMessage());
          }
          

          這里需要注意的是,setText的時候需要傳一個布爾值進去,表名需要使用HTML樣式。

          運行方法查看結果:

          可以看到,h1的樣式已經出來了。

          總結

          本文講解了如何在springboot中快速的發郵件。介紹了兩種發送郵件的方式:1、普通模式;2、HTML模式。其實還支持多種豐富的模式,比如模板引擎等,這里就不講解了,其實使用起來大同小異。

          們在日常工作中,經常需要把整理好的表格,復制粘貼到郵件的正文中,那么怎樣通過UiPath來實現帶有表格內容的郵件正文。

          本次內容所要用到的Activities有:

          1. ReadRange---獲取數據源
          2. Assign---拼接html格式
          3. ReadTextFile---讀取html數據模板
          4. For Each Row---填入數據
          5. Send OutlookMail Message---發送郵件

          下面是整個流程的實現過程:

          現在開始介紹每一個步驟的詳細設定

          第一步:通過ReadRange來讀取我們需要發送郵件的正文內容的數據,輸出OutPut,我們定義為DataTable類型,命名為DT。這里的ReadRange,我使用的是WorkBook中的activities。

          第二步:拼接html格式

          head的內容:"<html><body><table border="+"1"+" cellspacing="+""+"><tr><td>姓名</td><td>身份證</td> <td>出生年</td><td>年齡</td></tr>"

          tail的內容:"</tr></table></body></html>"

          第三步:讀取temp模板,來用填寫數據。

          temp模板的內容為:{0}:填寫姓名,{1}:身份證,{2}:出生年,{3}:年齡

          第四步:通過for each row來將所有數據的填入,并拼接成html格式

          body:body+string.Format(temp,row[0].ToString(),row[1].ToString(),row[2].ToString(),row[3].ToString())

          第五步:通過Send OutlookMail Message來發送郵件,

          outlook的格式選擇如下:

          最后我們來看看實現之后,我的郵件收到的效果

          好了,上面就是我們如何發送帶有表格正文的郵件,通過拼接html來實現的。

          如果大家在實現的過程中有任何疑問,可以掃描下方二維碼,一起討論,共同學習

          pringBoot實現郵件發送

          在Java中發送郵件主要依賴的包是Javax.mail,但是其操作很繁瑣,我們使用對javax.mail進行了封裝的Hutool的郵件工具MailUtil,但是因為Javax.mail是第三方包,需要添加此依賴

          代碼實現

          使用Hutool時,對所有的第三方依賴都是可選的,因此在使用Hutool進行郵件發送時需要引入第三方依賴

          添加Hutool和 javax.mail依賴

          <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
          </dependency>
          <dependency>
              <groupId>cn.hutool</groupId>
              <artifactId>hutool-all</artifactId>
              <version>5.5.7</version>
          </dependency>
          

          郵件服務器配置

          在Maven項目中的src/main/resources目錄下添加config目錄,然后新建mail.setting文件,然后進行配置。QQ郵箱SSL方式進行郵件發送的配置示例

          # 郵件服務器的SMTP地址
          host = smtp.qq.com
          # 郵件服務器的SMTP端口
          port = 465
          # 發件人(必須正確,否則發送失敗)
          from = XXXXXXXX@qq.com
          # 用戶名(注意:如果使用foxmail郵箱,此處user為qq號)
          user = XXXXXXXXX
          # 密碼(注意,某些郵箱需要為SMTP服務單獨設置密碼,詳情查看相關幫助)
          pass = XXXXXXXXXX
          #使用 STARTTLS安全連接,STARTTLS是對純文本通信協議的擴展。
          starttlsEnable = true
          # 使用SSL安全連接
          sslEnable = true
          # 指定實現javax.net.SocketFactory接口的類的名稱,這個類將被用于創建SMTP的套接字
          socketFactoryClass = javax.net.ssl.SSLSocketFactory
          # 如果設置為true,未能創建一個套接字使用指定的套接字工廠類將導致使用java.net.Socket創建的套接字類, 默認值為true
          socketFactoryFallback = true
          # 指定的端口連接到在使用指定的套接字工廠。如果沒有設置,將使用默認端口456
          socketFactoryPort = 465
          # SMTP超時時長,單位毫秒,缺省值不超時
          timeout = 0
          # Socket連接超時值,單位毫秒,缺省值不超時
          connectionTimeout = 0
          

          郵件發送

          1.發送普通文本郵件

            //收件人
                  ArrayList<String> tos = CollUtil.newArrayList(
                                  "XXXXXXXX@qq.com");
                  MailUtil.send(tos,"公司Offer","歡迎你的到了",false);
          

          使用Hutool封裝過的MailUtil進行發送郵件發出簡單,只需要一個send方法和明白其參數的含義就可以了

        1. tos:收件人地址,可以是一個或者多個
        2. subject:標題
        3. content:郵件正文,可以是文本或者Html
        4. isHtml:正文是Html,則為true,反之false
        5. files:可選:附件,一個或多個都可,將File對象添加到最后一個參數即可
        6. 2.使用Html格式進行發送

           //收件人
                  ArrayList<String> tos = CollUtil.newArrayList(
                                  "XXXXXXXX@qq.com");
          //使用Html格式發送郵件
                  MailUtil.send(tos,"公司Offer","<h1 style='color:red'>歡迎你的到來</h1>",true);
          

          3.發送郵件帶有附件和抄送人

                 //收件人
                  ArrayList<String> tos = CollUtil.newArrayList(
                                  "825505212@qq.com");
                  //抄送人
                  ArrayList<String> ccs = CollUtil.newArrayList(
                          "zbbhnsfduyjs@gmail.com");
                  //謎抄,就是收件人看不見該抄送人
                  ArrayList<String> bcss = CollUtil.newArrayList(
                          "zbbhnsfduyjs@gmail.com");
                  MailUtil.send(tos,ccs,bcss, "公司Offer", "歡迎你的到了!", false, FileUtil.file("D:\\微信圖片_20201206221537.jpg"));
                  
          

          自定義郵件發送

          除了使用mail.setting配置文件進行配置以外,還可以使用MailAccount對象進行配置,然后傳入MailUtil.Send。

           MailAccount mailAccount = new MailAccount();
                  mailAccount.setHost("smtp.qq.com");
                  mailAccount.setPort(465);
                  mailAccount.setFrom("XXXXXXX@qq.com");
                  mailAccount.setUser("XXXXXXX");
                  mailAccount.setPass("XXXXXXX");
                  mailAccount.setStarttlsEnable(true);
                  mailAccount.setSslEnable(true);
                  mailAccount.setSocketFactoryClass("javax.net.ssl.SSLSocketFactory");
                  mailAccount.setSocketFactoryFallback(true);
                  mailAccount.setSocketFactoryPort(465);
                  mailAccount.setTimeout(0);
                  mailAccount.setConnectionTimeout(0);
                  mailAccount.setAuth(true);
                  MailUtil.send(mailAccount,tos,"公司Offer","<h1 style='color:red'>歡迎你的到來</h1>",true);
          

          :QQ和Gmail郵箱的時候,是強制開啟SSL的,因此才有了以SSL配置QQ的示例。pass:QQ的SSL方法發送郵件的密碼不是你的登錄密碼。

          針對QQ郵箱說明

          在QQ郵箱中SMTP密碼是單獨生成的授權碼,不是QQ密碼,具體生成如下


          針對Foxmail郵箱說明

          在Hutool中user屬性默認提取你郵箱@前面的部分,但是foxmail郵箱是無效的,需要單獨配置為與之綁定的qq號碼或者XXXX@qq.com的XXXX。即:

          host = smtp.qq.com
          from = XXXX@foxmail.com
          user = foxmail郵箱對應的QQ號碼或者qq郵箱@前面部分
          

          總結:

          今天以QQ郵箱發送郵件為例介紹了,如何使用Hutool下的MailUtil工具進行,郵件發送,以及郵件發送的文件配置。

          喜歡我的可以進行關注,謝謝

          github地址:https://github.com/bangbangzhou/greemes/tree/master


          主站蜘蛛池模板: 女同一区二区在线观看| 99精品一区二区免费视频| 亚洲Av无码一区二区二三区 | 国产激情一区二区三区成人91| 美女一区二区三区| 精品国产区一区二区三区在线观看| 亚洲乱码一区二区三区在线观看 | 国产一区二区精品尤物| 精品日韩一区二区三区视频| 大伊香蕉精品一区视频在线| 国产无吗一区二区三区在线欢| 国产精品日韩一区二区三区 | 一区二区三区免费高清视频| 国产高清视频一区二区| 无码人妻精品一区二区三区99性| 亚洲精品一区二区三区四区乱码| 伊人久久精品无码av一区| 久久久综合亚洲色一区二区三区| 一区二区三区91| 国产午夜精品免费一区二区三区 | 国产日产久久高清欧美一区| 岛国无码av不卡一区二区| 亚洲天堂一区二区三区| 国产高清精品一区| 国产一区二区三区无码免费| 色天使亚洲综合一区二区| 成人国产精品一区二区网站公司| 亚洲色精品VR一区区三区 | 精品深夜AV无码一区二区老年| 亚洲一区中文字幕久久| 国产成人一区二区三区免费视频| 亚洲码一区二区三区| 成人免费观看一区二区| 日本无卡码一区二区三区| 国产乱人伦精品一区二区 | 国产激情з∠视频一区二区| 国产AV一区二区三区无码野战| 精品人无码一区二区三区| 国产精品合集一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 五十路熟女人妻一区二区|