【java】Spring Mail 發送郵件示例

      今天某同學在研究使用Java程序來發送郵件,使用的javax.mail來發送郵件,使用的騰訊的qq郵件服務器,用了原生的約定俗成的java代碼,調試了很長時間未果,出現了各種錯誤信息,然後對錯誤信息進行分析,當我看到的時候,我的頭腦閃現出了Spring Mail,原來看文章的時候,看過這個詞,但是沒有真正的去用這個框架去寫發送郵件的代碼,今天正好有機會,我就來幫某同學寫一段代碼。

   我們來思考一個問題,Spring框架一般的思路是在applicationContext.xml裏面對所需Bean進行配置,然後在程序裏面自動注入(IOC)該類,那我們自己就寫一個Service,直接調用該bean就基本能實現我們的功能了。

現在就來看下自己用5分鐘寫的代碼,有不對的地方,歡迎大家留言指正。

applicationContext.xml

    <!-- Spring Mail -->
    <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${mail.smtp.host}" />
        <property name="port" value="${mail.smtp.port}" />
        <property name="username" value="${mail.smtp.username}" />
        <property name="password" value="${mail.smtp.password}" />
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
                <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
                <prop key="mail.smtp.starttls.enable">${mail.smtp.starttls.enable}</prop>
                <prop key="mail.smtp.socketFactory.port">${mail.smtp.port}</prop>
                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
                <prop key="mail.smtp.socketFactory.fallback">false</prop>
            </props>
        </property>
    </bean>

email.properties

mail.smtp.host=smtp.qq.com
mail.smtp.port=465

#QQ郵箱,寫自己的QQ郵箱,此處爲瞎寫的QQ郵箱
[email protected]
#QQ授權碼
mail.smtp.password=hhvngsvchtapbjia
mail.smtp.timeout=50000
mail.smtp.auth=true
mail.smtp.starttls.enable=true

SendEmailService.java

package com.nw.promotion.business.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;

/**
 * 
 * @author 
 * @date 2018-02-07
 * @note 發送郵件服務,暫時配置騰訊郵箱
 */
@Service
public class SendEmailService {
	
	private String setFrom;
	
	private SimpleMailMessage simpleMailMessage;
	
	public SendEmailService(){
		setFrom = "[email protected]";//寫自己的QQ郵箱,此處爲瞎寫的QQ郵箱
	}
	
	@Autowired
	private JavaMailSender javaMailSender; 

	/**
	 * @param mailTo  收件人
	 * @param subject 郵件主題
	 * @param context 郵件內容
	 * @throws Exception
	 */
	public  void sendMail(String mailTo,String subject,String context) throws Exception {
		Assert.notNull(mailTo);
		Assert.notNull(subject);
		Assert.notNull(context);
		try {
			simpleMailMessage = new SimpleMailMessage();
			// 收件人
			simpleMailMessage.setTo(mailTo);
			// 郵件主題
			simpleMailMessage.setSubject(subject);
			// 郵件內容
			simpleMailMessage.setText(context);
			// 發件人
			simpleMailMessage.setFrom(setFrom);
			// 發送郵件
			javaMailSender.send(simpleMailMessage);
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}
	}
}

經過驗證,某同事就可以發送郵件了,大多數情況還是個思路問題。慢慢去提升自己思考問題的能力。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章