溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Spring的Maven項目實現(xiàn)發(fā)送郵件功能的示例

發(fā)布時間:2020-10-22 11:40:40 來源:腳本之家 閱讀:214 作者:Arvinaa 欄目:編程語言

問題分析

現(xiàn)在我們有這樣一個需求,就是當我們系統(tǒng)出現(xiàn)問題或bug的時候,讓系統(tǒng)通過郵件發(fā)送日志信息給相關人員,那么此時,我們就需要實現(xiàn)一個讓系統(tǒng)發(fā)送郵件的功能

解決步驟

1.pom jar包導入

<dependency>
 <groupId>javax.mail</groupId>
 <artifactId>mail</artifactId>
 <version>1.4.1</version>
</dependency>

2.xml配置

application-mail.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
   http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
  ">

<!--配置發(fā)送郵件的核心對象-->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <!--郵件發(fā)送協(xié)議-->
  <property name="host" value="smtp.qq.com"/>

  <!--這里的郵箱是你要發(fā)送郵件的郵箱-->
  <property name="username" value="xxxxxx@qq.com"/>
  <!--這里的密碼用的是授權碼-->
  <property name="password" value="xxxxxxx"/>
  <property name="defaultEncoding" value="UTF-8"/>
  <property name="javaMailProperties">
    <props>
      <!--這里是需要認證才能進行發(fā)送,防止隨意發(fā)送-->
      <prop key="mail.smtp.auth">true</prop>
      <!-- SMTP加密方式:連接到一個TLS保護連接 -->
      <prop key="mail.smtp.starttls.enable">true</prop>
    </props>
  </property>
</bean>
</beans>

3.交給Spring管理

其實就是將發(fā)送郵件的xml配置文件引入到spring的配置文件中

<!--配置導入配置文件,位置為當前目錄平級的plugs文件夾下面的所有.xml文件-->
<import resource="classpath:plugins/*.xml"/>

這里需要說明一下,classpath后面是跟的我的一個關于實現(xiàn)這些功能專門的配置文件的文件夾,然后通配文件夾里面所有.xml的配置文件,當然,也可以這樣寫

<import resource="classpath:plugins/applicationContext-mail.xml"/>

這樣配置也完全沒有任何問題,看個人喜好哈,只是我喜歡把這些相關的配置文件同一放在一個文件夾里面,然后統(tǒng)一一起引入

4.代碼實現(xiàn)

需要說明一下,郵件分為兩種,一種是普通郵件,即文本信息,不含html代碼或附件,另一個種就是包含html代碼和附件的,這兩種方式相同的是都需要在發(fā)送郵件的類里面引入發(fā)送郵件的核心對象

@Autowired
private JavaMailSender javaMailSender;

4.1 普通郵件

需要注意的是這里發(fā)送郵件的地址必須是applicaiton-mail.xml中所配置的username

  //獲取郵箱對象
  SimpleMailMessage message = new SimpleMailMessage();

  //設置由哪個郵箱發(fā)出 這里自己定義
  message.setFrom("xxxxxx@qq.com");

  //設置標題
  message.setSubject("測試來了哦");
  //設置發(fā)送內(nèi)容
  message.setText("我來了,你來了沒");

  //設置發(fā)送地址 -- 發(fā)給誰
  message.setTo("xxxx@icloud.com");

  //發(fā)送郵件
  javaMailSender.send(message);

4.1 復雜郵件

 //創(chuàng)建一個空郵件對象
  MimeMessage mimeMessage = javaMailSender.createMimeMessage();

  //創(chuàng)建發(fā)送復雜郵件的工具類,并傳入空郵件,設置是否有附件為true和編碼集
  MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");

  //設置發(fā)送郵件的郵箱地址,必須和xml里面配置一致
  messageHelper.setFrom("xxxxxx@qq.com");

  //設置郵件標題
  messageHelper.setSubject("復雜郵件標題,就是我");

  //設置郵件里面的普通內(nèi)容
  messageHelper.setText("我是復雜郵件,我又來了");

  //設置復雜郵件的html代碼,并設置是否為html為true
  messageHelper.setText("<h3>我是復雜郵件的html代碼,能實現(xiàn)不?</h3>",true);

  //添加發(fā)送郵件的附件,是一個圖片
  messageHelper.addAttachment("hah.png",new File("img/1.png"));

  //添加附件文件
  messageHelper.addAttachment("mf文件",new File("s/login.jsp"));

  //抄送給誰 這里的參數(shù)可以是數(shù)組,即多個接收對象
  messageHelper.setCc("mmmm@qq.com");
  //發(fā)送給誰 這里的參數(shù)可以是數(shù)組,即多個接收對象
  messageHelper.setTo("xxxx@icloud.com");

  //發(fā)送郵件
  javaMailSender.send(mimeMessage);

5.郵箱配置

注意,大家不要以為現(xiàn)在就可以直接發(fā)送了,還需要大家花一毛錢才行,這個錢不是給我哈,也不是給郵箱或瀏覽器,而是給到運營商,這里就以QQ郵箱為例:

第一步,點擊郵箱首頁左上角的設置

基于Spring的Maven項目實現(xiàn)發(fā)送郵件功能的示例

第二步,選中設置里面的賬戶設置

基于Spring的Maven項目實現(xiàn)發(fā)送郵件功能的示例

第三步,往下翻,翻到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務

基于Spring的Maven項目實現(xiàn)發(fā)送郵件功能的示例

第四步,會讓你發(fā)送短信,這時候就可以直接發(fā)送短信,這里就到了收錢的地方,看吧,不是我收哈

基于Spring的Maven項目實現(xiàn)發(fā)送郵件功能的示例

最后,當發(fā)送成功之后,就會收到一個授權碼,記住它,然后填入你的application-mail.xml里面的password欄中,然后再運行我們的測試方法即可

到此這篇關于基于Spring的Maven項目實現(xiàn)發(fā)送郵件功能的示例的文章就介紹到這了,更多相關Spring Maven項目發(fā)送郵件內(nèi)容請搜索億速云以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI