基於Javamail實現發送郵件(QQ/網易郵件服務器)

本文實例為大傢分享瞭Javamail實現發送郵件的具體代碼,供大傢參考,具體內容如下

一. 使用QQ郵箱作為smtp郵件服務器發送郵件

步驟1.開啟QQ郵箱的POP3/SMTP服務:

開啟後會得到一個16位授權碼, 作為第三方使用郵件服務器的登錄憑證.
註意: 修改郵箱密碼後, 授權碼會失效, 需要重新獲取.

步驟2: 編寫配置文件applicationContext-email.xml(此處使用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" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd"
    default-lazy-init="false">
    <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host">
            <!-- qq的SMTP郵箱服務器地址, 若使用163網易則改為:smtp.163.com -->
            <value>smtp.qq.com</value>
        </property>
<!--     <property name="port">
            SMTP郵箱服務器端口(465或587), 建議不要配置, 使用默認就行 
            <value>建議不要配置!!博主配置反而發佈出去!!</value>
        </property> -->
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <!-- 連接超時時間 -->
                <prop key="mail.smtp.timeout">25000</prop>
            </props>
        </property>
        <!-- 你的郵箱賬號 -->
        <property name="username">
            <value>[email protected]</value>
        </property>
        <!-- 16位授權碼, 註意不是登錄密碼! -->
        <property name="password">
            <value>qazcrslpoghcbahh</value>
        </property>
        <property name="defaultEncoding">
            <value>UTF-8</value>
        </property>
    </bean>

    <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
        <!-- 發件人信息, 需要和上面username值一樣 -->
        <property name="from" value="[email protected]" />
    </bean>

</beans>

步驟3: 編寫測試類:

package emailtest;

import java.util.Date;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.StringUtils;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-email.xml")
public class EmailTest {

    @Resource
    private JavaMailSender javaMailSender;

    @Resource
    private SimpleMailMessage simpleMailMessage;
    
    @Test
    public void sendMail() throws MessagingException{
        sendMail("[email protected]","驗證碼:6666","密碼找回");
    }
    
    public void sendMail(String email, String content, String subject) throws MessagingException {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper messageHelper;
        messageHelper = new MimeMessageHelper(message, true, "UTF-8");
        messageHelper.setFrom(StringUtils.trimAllWhitespace(simpleMailMessage.getFrom()));
        messageHelper.setTo(email);
        messageHelper.setSubject(subject);
        messageHelper.setText(content, true);
        messageHelper.setSentDate(new Date());
        // 發送郵件
        javaMailSender.send(messageHelper.getMimeMessage());
        
    }
}

二. 使用網易郵箱作為smtp郵件服務器發送郵件

1.相似的, 先打開網易郵箱的POP3/SMTP服務, 設置授權碼.

2.修改上述applicationContext.xml中配置信息:

服務器地址改為smtp.163.com
username更改為你的網易郵箱賬號
password則是你在開啟POP3/SMTP服務時設置的授權碼
from的值和username值一樣.

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: