一 確認QQ是否開啟了POP3/SMPT協議
1.登陸QQ,打開QQ郵箱,點擊“設置”

2.點擊“賬戶”,拉到下面“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務”

3.點擊“開啟”,會看見幾種驗證方式,選擇任意一種覺得方便的方式

4.在驗證完之后會得到一個授權碼,這個授權碼先拷貝下來,等一下會作為系統郵箱的密碼,要是授權碼忘記了也沒有關系,可以再重新生成

二 測試代碼
1.在成功開啟QQ的POP3/SMTP協議之后,就可以測試發送了
1 import java.util.Properties; 2 3 import javax.mail.Message; 4 import javax.mail.MessagingException; 5 import javax.mail.Session; 6 import javax.mail.Transport; 7 import javax.mail.internet.AddressException; 8 import javax.mail.internet.InternetAddress; 9 import javax.mail.internet.MimeMessage; 10 import javax.mail.internet.MimeMessage.RecipientType; 11 12 public class SendmailUtil { 13 public static void main(String[] args) throws AddressException, MessagingException { 14 Properties properties = new Properties(); 15 properties.put("mail.transport.protocol", "smtp"); // 連接協議 16 properties.put("mail.smtp.host", "smtp.qq.com"); // 主機名 17 properties.put("mail.smtp.port", 465); // 端口號 18 properties.put("mail.smtp.auth", "true"); 19 properties.put("mail.smtp.ssl.enable", "true"); // 設置是否使用ssl安全連接 ---一般都使用 20 properties.put("mail.debug", "true"); // 設置是否顯示debug信息 true 會在控制台顯示相關信息 21 // 得到回話對象 22 Session session = Session.getInstance(properties); 23 // 獲取郵件對象 24 Message message = new MimeMessage(session); 25 // 設置發件人郵箱地址 26 message.setFrom(new InternetAddress("發件人郵箱@qq.com")); 27 // 設置收件人地址 28 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("收件人郵箱@qq.com") }); 29 // 設置郵件標題 30 message.setSubject("由JavaMail發出的測試郵件"); 31 // 設置郵件內容 32 message.setText("內容為: 這是第一封java發送來的郵件。"); 33 // 得到郵差對象 34 Transport transport = session.getTransport(); 35 // 連接自己的郵箱賬戶 36 transport.connect("發件人郵箱@qq.com", "授權碼");// 密碼為剛才得到的授權碼 37 // 發送郵件 38 transport.sendMessage(message, message.getAllRecipients()); 39 } 40 }
2.在運行代碼之后,要是控制台輸出為以下內容,則測試成功
DEBUG: JavaMail version 1.4.3 DEBUG: successfully loaded resource: /META-INF/javamail.default.providers DEBUG: Tables of loaded providers DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]} DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]} DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.qq.com", port 465, isSSL true 220 smtp.qq.com Esmtp QQ Mail Server DEBUG SMTP: connected to host "smtp.qq.com", port: 465 EHLO DESKTOP-P7GG6RA 250-smtp.qq.com 250-PIPELINING 250-SIZE 73400320 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN 250-MAILCOMPRESS 250 8BITMIME DEBUG SMTP: Found extension "PIPELINING", arg "" DEBUG SMTP: Found extension "SIZE", arg "73400320" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN" DEBUG SMTP: Found extension "AUTH=LOGIN", arg "" DEBUG SMTP: Found extension "MAILCOMPRESS", arg "" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Attempt to authenticate DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM AUTH LOGIN 334 VXNlcm5hbWU6 NDQ3ODQzMDk4QHFxLmNvbQ== 334 UGFzc3dvcmQ6 bXZ6dHJicHpxeGt5YmllYw== 235 Authentication successful DEBUG SMTP: use8bit false MAIL FROM:<發件人@qq.com> 250 Ok RCPT TO:<收件人@qq.com> 250 Ok DEBUG SMTP: Verified Addresses DEBUG SMTP: 收件人@qq.com DATA 354 End data with <CR><LF>.<CR><LF> From: 發件人@qq.com To: 收件人@qq.com Message-ID: <696865876.0.1500865241924.JavaMail.SG@DESKTOP-P7GG6RA> Subject: =?GBK?B?08lKYXZhTWFpbLeis/a1xLLiytTTyrz+?= MIME-Version: 1.0 Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 xNrI3c6qo7og1eLKx7Xa0ru34mphdmG3osvNwLS1xNPKvP6how== . 250 Ok: queued as
3.再去收件人郵箱里面去查看是否收到郵件

三 注意:
只需要發件人郵箱(也就是自己設定的系統郵箱)開通POP3/SMTP協議,收件人的郵箱是不需要開通POP3/SMTP協議的
希望整理出來的這些內容對大家有幫助,祝大家每天都開開心心!^-^
