10.基於Spring的Maven項目實現發送郵件功能

問題分析

如今咱們有這樣一個需求,就是當咱們系統出現問題或bug的時候,讓系統經過郵件發送日誌信息給相關人員,那麼此時,咱們就須要實現一個讓系統發送郵件的功能html

解決步驟

1.pom jar包導入
<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4.1</version>
</dependency>
2.xml配置

application-mail.xml配置java

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

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="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的配置文件,固然,也能夠這樣寫app

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

這樣配置也徹底沒有任何問題,看我的喜愛哈,只是我喜歡把這些相關的配置文件同一放在一個文件夾裏面,而後統一一塊兒引入jsp

4.代碼實現

須要說明一下,郵件分爲兩種,一種是普通郵件,即文本信息,不含html代碼或附件,另外一個種就是包含html代碼和附件的,這兩種方式相同的是都須要在發送郵件的類裏面引入發送郵件的核心對象工具

@Autowired
private 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郵箱爲例:
第一步,點擊郵箱首頁左上角的設置
image.png
第二步,選中設置裏面的帳戶設置
image.png
第三步,往下翻,翻到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務
image.png編碼

第四步,會讓你發送短信,這時候就能夠直接發送短信,這裏就到了收錢的地方,看吧,不是我收哈
image.png最後,當發送成功以後,就會收到一個受權碼,記住它,而後填入你的application-mail.xml裏面的password欄中,而後再運行咱們的測試方法便可

相關文章
相關標籤/搜索