1. 程式人生 > >java傳送qq郵件

java傳送qq郵件

1.開啟POP3/SMTP協議

設定--》賬戶--》

2.新增依賴:

<dependency >
            <groupId >javax.mail </groupId >
            <artifactId >mail </artifactId >
            <version >1.4.5 </version >
        </dependency >
        <dependency >
            <groupId >com.sun.mail </groupId >
            <artifactId >javax.mail </artifactId >
            <version >1.5.4 </version >
        </dependency >

3.程式碼

package com.mail;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.sun.mail.util.MailSSLSocketFactory;

/**
 * JavaMail傳送郵件:前提是QQ郵箱裡帳號設定要開啟POP3/SMTP協議
 */
public class SendMail {

	public static void main(String[] args) throws Exception {

		Properties prop = new Properties();
		// 開啟debug除錯,以便在控制檯檢視
		prop.setProperty("mail.debug", "true");
		// 設定郵件伺服器主機名
		prop.setProperty("mail.host", "smtp.qq.com");
		// 傳送伺服器需要身份驗證
		prop.setProperty("mail.smtp.auth", "true");
		// 傳送郵件協議名稱
		prop.setProperty("mail.transport.protocol", "smtp");

		// 開啟SSL加密,否則會失敗
		MailSSLSocketFactory sf = new MailSSLSocketFactory();
		sf.setTrustAllHosts(true);
		prop.put("mail.smtp.ssl.enable", "true");
		prop.put("mail.smtp.ssl.socketFactory", sf);

		// 建立session
		Session session = Session.getInstance(prop);
		// 通過session得到transport物件
		Transport ts = session.getTransport();
		// 連線郵件伺服器:郵箱型別,帳號,授權碼代替密碼(更安全)
		// =====================自行修改賬號和授權碼
		ts.connect("smtp.qq.com", "xxxxxxxxxxx", "dtsctlfcdwwwwwwww");// 後面的字元是授權碼
		// 建立郵件
		Message message = createSimpleMail(session);
		// 傳送郵件
		ts.sendMessage(message, message.getAllRecipients());
		ts.close();
	}

	/**
	 * @Method: createSimpleMail
	 * @Description: 建立一封只包含文字的郵件
	 */
	public static MimeMessage createSimpleMail(Session session) throws Exception {
		// 建立郵件物件
		MimeMessage message = new MimeMessage(session);
		// 指明郵件的發件人
		message.setFrom(new InternetAddress("
[email protected]
")); // 指明郵件的收件人,現在發件人和收件人是一樣的,那就是自己給自己發 message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]")); // 郵件的標題 message.setSubject("JavaMail測試"); // 郵件的文字內容 message.setContent("<font style='color:red'>JavaMail傳送郵件成功!</font>", "text/html;charset=UTF-8"); // 返回建立好的郵件物件 return message; } }