使用QQ郵箱SMTP服務的javamail配置


最近做一個小項目要用到JAVA的郵箱的發送功能。遇到一些坑這里記錄分享一下:QQ群交流:697028234

1、QQ郵箱一定要設置開通SMTP/POP這項。並生成授權碼。

2、用MAVEN生成一個QUICKSTART項目,測試用的哈。加入依賴如下:

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4.7</version>
</dependency>

 3、在main方法里加入如下代碼測試成功的哈。

package com.sendmail.sendmail_test;

import java.util.Properties;

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

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args ) throws MessagingException
    {
    	
    	// 配置發送郵件的環境屬性
        final Properties props = new Properties();
        /*
         * 可用的屬性: mail.store.protocol / mail.transport.protocol / mail.host /
         * mail.user / mail.from
         */
        // 表示SMTP發送郵件,需要進行身份驗證
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.qq.com");
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.debug", "true");
//遇到最多的坑就是下面這行,不加要報“A secure connection is requiered”錯。 props.put("mail.smtp.starttls.enable", "true"); // 發件人的賬號 props.put("mail.user", "XXXX@qq.com"); // 訪問SMTP服務時需要提供的密碼 props.put("mail.password", "這里是QQ郵箱授權碼"); // 構建授權信息,用於進行SMTP進行身份驗證 Authenticator authenticator = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { // 用戶名、密碼 String userName = props.getProperty("mail.user"); String password = props.getProperty("mail.password"); return new PasswordAuthentication(userName, password); } }; // 使用環境屬性和授權信息,創建郵件會話 Session mailSession = Session.getInstance(props, authenticator); // 創建郵件消息 MimeMessage message = new MimeMessage(mailSession); // 設置發件人 InternetAddress form = new InternetAddress( props.getProperty("mail.user")); message.setFrom(form); // 設置收件人 InternetAddress to = new InternetAddress("3489417@qq.com"); message.setRecipient(RecipientType.TO, to); // 設置抄送,抄送和密送如果不寫正確的地址也要報錯。最好注釋不用。 // InternetAddress cc = new InternetAddress(""); // message.setRecipient(RecipientType.CC, cc); // // // 設置密送,其他的收件人不能看到密送的郵件地址 // InternetAddress bcc = new InternetAddress(""); // message.setRecipient(RecipientType.CC, bcc); // 設置郵件標題 message.setSubject("JAVA測試郵件"); // 設置郵件的內容體 message.setContent("<a href='http://www.XXX.org'>測試的郵件</a>", "text/html;charset=UTF-8"); // 發送郵件 Transport.send(message); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM