基于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 class='org.springframework.mail.javamail.JavaMailSenderImpl'> <!--郵件發送協議--> <property name='host' value='smtp.qq.com'/> <!--這里的郵箱是你要發送郵件的郵箱--> <property name='username' value='xxxxxx@qq.com'/> <!--這里的密碼用的是授權碼--> <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代碼和附件的,這兩種方式相同的是都需要在發送郵件的類里面引入發送郵件的核心對象
@Autowiredprivate JavaMailSender javaMailSender;
4.1 普通郵件
需要注意的是這里發送郵件的地址必須是applicaiton-mail.xml中所配置的username
//獲取郵箱對象 SimpleMailMessage message = new SimpleMailMessage(); //設置由哪個郵箱發出 這里自己定義 message.setFrom('xxxxxx@qq.com'); //設置標題 message.setSubject('測試來了哦'); //設置發送內容 message.setText('我來了,你來了沒'); //設置發送地址 -- 發給誰 message.setTo('xxxx@icloud.com'); //發送郵件 javaMailSender.send(message);
4.1 復雜郵件
//創建一個空郵件對象 MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //創建發送復雜郵件的工具類,并傳入空郵件,設置是否有附件為true和編碼集 MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, 'UTF-8'); //設置發送郵件的郵箱地址,必須和xml里面配置一致 messageHelper.setFrom('xxxxxx@qq.com'); //設置郵件標題 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('mmmm@qq.com'); //發送給誰 這里的參數可以是數組,即多個接收對象 messageHelper.setTo('xxxx@icloud.com'); //發送郵件 javaMailSender.send(mimeMessage);
5.郵箱配置
注意,大家不要以為現在就可以直接發送了,還需要大家花一毛錢才行,這個錢不是給我哈,也不是給郵箱或瀏覽器,而是給到運營商,這里就以QQ郵箱為例:
第一步,點擊郵箱首頁左上角的設置
第二步,選中設置里面的賬戶設置
第三步,往下翻,翻到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務
第四步,會讓你發送短信,這時候就可以直接發送短信,這里就到了收錢的地方,看吧,不是我收哈
最后,當發送成功之后,就會收到一個授權碼,記住它,然后填入你的application-mail.xml里面的password欄中,然后再運行我們的測試方法即可
到此這篇關于基于Spring的Maven項目實現發送郵件功能的示例的文章就介紹到這了,更多相關Spring Maven項目發送郵件內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: