JavaMail實現郵箱之間發送郵件功能

package com.minstone.message.util;

import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.springframework.stereotype.Component;


@Component
public class SendmailUtil {
    // 設置服務器
    private static String KEY_SMTP = "mail.smtp.host";
//    private static String VALUE_SMTP = "smtp.163.com";
//    private static String VALUE_SMTP = "smtp.qq.com";
//    private static String VALUE_SMTP = "smtp.exmail.qq.com";
    private static String VALUE_SMTP = "smtp.sina.com.cn";
    // 服務器驗證
    private static String KEY_PROPS = "mail.smtp.auth";
    private static boolean VALUE_PROPS = true;
    // 發件人用戶名、密碼
//    private String SEND_USER = "abc25660663";
//    private String SEND_USER = "1481596361";
//    private String SEND_USER = "hongxy";
    private String SEND_USER = "mingdong123abc";
    //發件人郵箱
//    private String FROMADDRESS=SEND_USER+"@163.com";
//    private String FROMADDRESS=SEND_USER+"@qq.com";
//    private String FROMADDRESS=SEND_USER+"@minstone.com.cn";
    private String FROMADDRESS=SEND_USER+"@sina.com";
    private String SEND_UNAME = "政務服務中心";
    //郵箱密碼
//    private String SEND_PWD = "25660663abc.";
//    private String SEND_PWD = "313131abc.";
//    private String SEND_PWD = "25660663Abc.";
    private String SEND_PWD = "mingdong123abc";
    
    // 創建會話
    private MimeMessage message;
    private Session s;
 
    /*
     * 初始化方法
     */
    public SendmailUtil() {
        Properties props = System.getProperties();
        // 鏈接協議
        props.put("mail.transport.protocol", "smtp");
        props.put(KEY_SMTP, VALUE_SMTP);
        props.put(KEY_PROPS, "true");//true必定要加雙引號
        props.put("mail.smtp.ssl.enable", "true");// 設置是否使用ssl安全鏈接 ---通常都使用
        props.put("mail.debug", "true");// 設置是否顯示debug信息 true 會在控制檯顯示相關信息
        s =  Session.getDefaultInstance(props, new Authenticator(){
              protected PasswordAuthentication getPasswordAuthentication() {
                  return new PasswordAuthentication(SEND_UNAME, SEND_PWD);
              }});
        s.setDebug(true);
        message = new MimeMessage(s);
    }
 
    /**
     * 發送郵件
     * 
     * @param headName
     *            郵件頭文件名
     * @param sendHtml
     *            郵件內容
     * @param receiveUser
     *            收件人地址
     */
    public void doSendHtmlEmail(String headName, String sendHtml,
            String receiveUser){
        try {
            // 發件人
            InternetAddress from = new InternetAddress(FROMADDRESS);//發送人地址
            message.setFrom(from);
            // 收件人
            InternetAddress to = new InternetAddress(receiveUser);
            message.setRecipient(Message.RecipientType.TO, to);
            // 郵件標題
            message.setSubject(headName);
            String content = sendHtml.toString();
            // 郵件內容,也能夠使純文本"text/plain"
            message.setContent(content, "text/html;charset=UTF-8");
            message.setSentDate(new Date());
            message.saveChanges();
            Transport transport = s.getTransport("smtp");
            //這種方式應用於163網易郵箱和QQ郵箱,最後一個參數是受權碼,網易的受權碼能夠自動設置,而QQ郵箱的受權碼需經過短信纔可收到
//            transport.connect(FROMADDRESS,"25660663abc");
//            transport.connect(FROMADDRESS,"yigoehcqlbxkhfid");
            //QQ企業郵箱,新浪郵箱,因爲企業QQ郵箱和新浪郵箱開通POP3/SMTP/IMAP服務時,不須要受權碼
            transport.connect(VALUE_SMTP, FROMADDRESS, SEND_PWD);
            
            // 發送
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            System.out.println("send success!");
        } catch (AddressException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
 
    public static void main(String[] args) {
        SendmailUtil se = new SendmailUtil();
        se.doSendHtmlEmail("郵件標題1111", "郵件內容", "1481596361@qq.com");
    }
}

 

以上例子是JavaMail實現郵箱之間發送郵件功能,須要注意的是發送郵箱是否須要受權碼,須要受權碼書寫的方式和不須要受權碼書寫的方式不一致,主要區別在html

transport.connect方法的參數,而接收郵件的郵箱卻不規定,任意郵箱均可以。
須要導入一些包:
具體根據自身的狀況進行導入,通常來講mail.jar或者javax.mail.jar和activation.jar需導入
相關文章
相關標籤/搜索