基於Spring的Maven專案實現傳送郵件功能的示例
問題分析
現在我們有這樣一個需求,就是當我們系統出現問題或bug的時候,讓系統通過郵件傳送日誌資訊給相關人員,那麼此時,我們就需要實現一個讓系統傳送郵件的功能
解決步驟
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 "> <!--配置傳送郵件的核心物件--> <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <!--郵件傳送協議--> <property name="host" value="smtp.qq.com"/> <!--這裡的郵箱是你要傳送郵件的郵箱--> <property name="username" value="[email protected]"/> <!--這裡的密碼用的是授權碼--> <property name="password" value="xxxxxxx"/> <property name="defaultEncoding" value="UTF-8"/> <property name="javaMailProperties"> <props> <!--這裡是需要認證才能進行傳送,防止隨意傳送--> <prop key="mail.smtp.auth">true</prop> <!-- SMTP加密方式:連線到一個TLS保護連線 --> <prop key="mail.smtp.starttls.enable">true</prop> </props> </property> </bean> </beans>
3.交給Spring管理
其實就是將傳送郵件的xml配置檔案引入到spring的配置檔案中
<!--配置匯入配置檔案,位置為當前目錄平級的plugs資料夾下面的所有.xml檔案--> <import resource="classpath:plugins/*.xml"/>
這裡需要說明一下,classpath後面是跟的我的一個關於實現這些功能專門的配置檔案的資料夾,然後通配資料夾裡面所有.xml的配置檔案,當然,也可以這樣寫
<import resource="classpath:plugins/applicationContext-mail.xml"/>
這樣配置也完全沒有任何問題,看個人喜好哈,只是我喜歡把這些相關的配置檔案同一放在一個資料夾裡面,然後統一一起引入
4.程式碼實現
需要說明一下,郵件分為兩種,一種是普通郵件,即文字資訊,不含html程式碼或附件,另一個種就是包含html程式碼和附件的,這兩種方式相同的是都需要在傳送郵件的類裡面引入傳送郵件的核心物件
@Autowired private JavaMailSender javaMailSender;
4.1 普通郵件
需要注意的是這裡傳送郵件的地址必須是applicaiton-mail.xml中所配置的username
//獲取郵箱物件 SimpleMailMessage message = new SimpleMailMessage(); //設定由哪個郵箱發出 這裡自己定義 message.setFrom("[email protected]"); //設定標題 message.setSubject("測試來了哦"); //設定傳送內容 message.setText("我來了,你來了沒"); //設定傳送地址 -- 發給誰 message.setTo("[email protected]"); //傳送郵件 javaMailSender.send(message);
4.1 複雜郵件
//建立一個空郵件物件 MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //建立傳送複雜郵件的工具類,並傳入空郵件,設定是否有附件為true和編碼集 MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8"); //設定傳送郵件的郵箱地址,必須和xml裡面配置一致 messageHelper.setFrom("[email protected]"); //設定郵件標題 messageHelper.setSubject("複雜郵件標題,就是我"); //設定郵件裡面的普通內容 messageHelper.setText("我是複雜郵件,我又來了"); //設定複雜郵件的html程式碼,並設定是否為html為true messageHelper.setText("<h2>我是複雜郵件的html程式碼,能實現不?</h2>",true); //添加發送郵件的附件,是一個圖片 messageHelper.addAttachment("hah.png",new File("img/1.png")); //新增附件檔案 messageHelper.addAttachment("mf檔案",new File("s/login.jsp")); //抄送給誰 這裡的引數可以是陣列,即多個接收物件 messageHelper.setCc("[email protected]"); //傳送給誰 這裡的引數可以是陣列,即多個接收物件 messageHelper.setTo("[email protected]"); //傳送郵件 javaMailSender.send(mimeMessage);
5.郵箱配置
注意,大家不要以為現在就可以直接傳送了,還需要大家花一毛錢才行,這個錢不是給我哈,也不是給郵箱或瀏覽器,而是給到運營商,這裡就以QQ郵箱為例:
第一步,點選郵箱首頁左上角的設定
第二步,選中設定裡面的賬戶設定
第三步,往下翻,翻到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務
第四步,會讓你傳送簡訊,這時候就可以直接傳送簡訊,這裡就到了收錢的地方,看吧,不是我收哈
最後,當傳送成功之後,就會收到一個授權碼,記住它,然後填入你的application-mail.xml裡面的password欄中,然後再執行我們的測試方法即可
到此這篇關於基於Spring的Maven專案實現傳送郵件功能的示例的文章就介紹到這了,更多相關Spring Maven專案傳送郵件內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!