基于Spring的Maven項(xiàng)目實(shí)現(xiàn)發(fā)送郵件功能的示例
問(wèn)題分析
現(xiàn)在我們有這樣一個(gè)需求,就是當(dāng)我們系統(tǒng)出現(xiàn)問(wèn)題或bug的時(shí)候,讓系統(tǒng)通過(guò)郵件發(fā)送日志信息給相關(guān)人員,那么此時(shí),我們就需要實(shí)現(xiàn)一個(gè)讓系統(tǒng)發(fā)送郵件的功能
解決步驟
1.pom jar包導(dǎo)入
<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ā)送郵件的核心對(duì)象-->
<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"/>
<!--這里的密碼用的是授權(quán)碼-->
<property name="password" value="xxxxxxx"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="javaMailProperties">
<props>
<!--這里是需要認(rèn)證才能進(jìn)行發(fā)送,防止隨意發(fā)送-->
<prop key="mail.smtp.auth">true</prop>
<!-- SMTP加密方式:連接到一個(gè)TLS保護(hù)連接 -->
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>
</beans>
3.交給Spring管理
其實(shí)就是將發(fā)送郵件的xml配置文件引入到spring的配置文件中
<!--配置導(dǎo)入配置文件,位置為當(dāng)前目錄平級(jí)的plugs文件夾下面的所有.xml文件--> <import resource="classpath:plugins/*.xml"/>
這里需要說(shuō)明一下,classpath后面是跟的我的一個(gè)關(guān)于實(shí)現(xiàn)這些功能專門(mén)的配置文件的文件夾,然后通配文件夾里面所有.xml的配置文件,當(dāng)然,也可以這樣寫(xiě)
<import resource="classpath:plugins/applicationContext-mail.xml"/>
這樣配置也完全沒(méi)有任何問(wèn)題,看個(gè)人喜好哈,只是我喜歡把這些相關(guān)的配置文件同一放在一個(gè)文件夾里面,然后統(tǒng)一一起引入
4.代碼實(shí)現(xiàn)
需要說(shuō)明一下,郵件分為兩種,一種是普通郵件,即文本信息,不含html代碼或附件,另一個(gè)種就是包含html代碼和附件的,這兩種方式相同的是都需要在發(fā)送郵件的類里面引入發(fā)送郵件的核心對(duì)象
@Autowired private JavaMailSender javaMailSender;
4.1 普通郵件
需要注意的是這里發(fā)送郵件的地址必須是applicaiton-mail.xml中所配置的username
//獲取郵箱對(duì)象
SimpleMailMessage message = new SimpleMailMessage();
//設(shè)置由哪個(gè)郵箱發(fā)出 這里自己定義
message.setFrom("xxxxxx@qq.com");
//設(shè)置標(biāo)題
message.setSubject("測(cè)試來(lái)了哦");
//設(shè)置發(fā)送內(nèi)容
message.setText("我來(lái)了,你來(lái)了沒(méi)");
//設(shè)置發(fā)送地址 -- 發(fā)給誰(shuí)
message.setTo("xxxx@icloud.com");
//發(fā)送郵件
javaMailSender.send(message);
4.1 復(fù)雜郵件
//創(chuàng)建一個(gè)空郵件對(duì)象
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//創(chuàng)建發(fā)送復(fù)雜郵件的工具類,并傳入空郵件,設(shè)置是否有附件為true和編碼集
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
//設(shè)置發(fā)送郵件的郵箱地址,必須和xml里面配置一致
messageHelper.setFrom("xxxxxx@qq.com");
//設(shè)置郵件標(biāo)題
messageHelper.setSubject("復(fù)雜郵件標(biāo)題,就是我");
//設(shè)置郵件里面的普通內(nèi)容
messageHelper.setText("我是復(fù)雜郵件,我又來(lái)了");
//設(shè)置復(fù)雜郵件的html代碼,并設(shè)置是否為html為true
messageHelper.setText("<h2>我是復(fù)雜郵件的html代碼,能實(shí)現(xiàn)不?</h2>",true);
//添加發(fā)送郵件的附件,是一個(gè)圖片
messageHelper.addAttachment("hah.png",new File("img/1.png"));
//添加附件文件
messageHelper.addAttachment("mf文件",new File("s/login.jsp"));
//抄送給誰(shuí) 這里的參數(shù)可以是數(shù)組,即多個(gè)接收對(duì)象
messageHelper.setCc("mmmm@qq.com");
//發(fā)送給誰(shuí) 這里的參數(shù)可以是數(shù)組,即多個(gè)接收對(duì)象
messageHelper.setTo("xxxx@icloud.com");
//發(fā)送郵件
javaMailSender.send(mimeMessage);
5.郵箱配置
注意,大家不要以為現(xiàn)在就可以直接發(fā)送了,還需要大家花一毛錢才行,這個(gè)錢不是給我哈,也不是給郵箱或?yàn)g覽器,而是給到運(yùn)營(yíng)商,這里就以QQ郵箱為例:
第一步,點(diǎn)擊郵箱首頁(yè)左上角的設(shè)置

第二步,選中設(shè)置里面的賬戶設(shè)置

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

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

最后,當(dāng)發(fā)送成功之后,就會(huì)收到一個(gè)授權(quán)碼,記住它,然后填入你的application-mail.xml里面的password欄中,然后再運(yùn)行我們的測(cè)試方法即可
到此這篇關(guān)于基于Spring的Maven項(xiàng)目實(shí)現(xiàn)發(fā)送郵件功能的示例的文章就介紹到這了,更多相關(guān)Spring Maven項(xiàng)目發(fā)送郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot實(shí)現(xiàn)發(fā)送郵件(QQ郵箱為例)
- 基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過(guò)程解析
- Spring Boot Admin郵件警報(bào)整合過(guò)程解析
- SpringBoot發(fā)送郵件功能 驗(yàn)證碼5分鐘過(guò)期
- SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解
- Springboot實(shí)現(xiàn)郵件發(fā)送功能
- SpringBoot實(shí)現(xiàn)發(fā)送郵件任務(wù)
- SpringBoot實(shí)現(xiàn)發(fā)送郵件功能
- Spring發(fā)送郵件如何內(nèi)嵌圖片增加附件
相關(guān)文章
@Configuration與@Component作為配置類的區(qū)別詳解
這篇文章主要介紹了@Configuration與@Component作為配置類的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
淺析Java的Hibernate框架中的緩存和延遲加載機(jī)制
這篇文章主要介紹了Java的Hibernate框架中的緩存和延遲加載機(jī)制,Hibernate是注明的Java下SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下2015-11-11
Java8中對(duì)于LocalDateTime的序列化和反序列化問(wèn)題
這篇文章主要介紹了Java8中對(duì)于LocalDateTime的序列化和反序列化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
SpringBoot項(xiàng)目配置明文密碼泄露問(wèn)題的處理方式
這篇文章主要介紹了SpringBoot項(xiàng)目配置明文密碼泄露問(wèn)題的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Java實(shí)現(xiàn)的動(dòng)態(tài)數(shù)字時(shí)鐘功能示例【顯示世界時(shí)間】
這篇文章主要介紹了Java實(shí)現(xiàn)的動(dòng)態(tài)數(shù)字時(shí)鐘功能,結(jié)合實(shí)例形式分析了java顯示北京、紐約、倫敦等世界時(shí)間的相關(guān)日期時(shí)間運(yùn)算操作技巧,需要的朋友可以參考下2019-03-03
Spring?createBeanInstance實(shí)例化Bean
這篇文章主要為大家介紹了Spring?createBeanInstance實(shí)例化Bean源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Mybatis-plus插入數(shù)據(jù)遇到主鍵沒(méi)有默認(rèn)值的情況
這篇文章主要介紹了Mybatis-plus插入數(shù)據(jù)遇到主鍵沒(méi)有默認(rèn)值的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11

