JAVA學習---QQ傳送郵件與接收
阿新 • • 發佈:2018-12-21
QQ郵箱的設定
PS:菜鳥一個,只是為了防止犯下同一個錯誤,所以,寫了這個部落格,歡迎大家多提意見,雖然我不一定會聽,但我一定認真考慮。
第一步:QQ郵箱的設定
話不多說,直接配置: 登入QQ郵箱後,進入設定頁面, 在最上面一行, 賬戶選單下,最下邊有四個服務,開啟pop/smtp或imap/smtp這兩個,開啟這兩個就可以了。
第二步:開始上程式碼
傳送郵件程式碼
package test; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class test1{ public static void main(String [] args) { // 收件人電子郵箱 String to = "
[email protected]"; // 發件人電子郵箱 String from = "[email protected]"; // 指定傳送郵件的主機為 localhost String host = "smtp.qq.com"; // 獲取系統屬性 Properties props = System.getProperties(); // 設定郵件伺服器 props.setProperty("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); props.setProperty("mail.user", from); props.setProperty("mail.password", "郵箱密碼"); props.setProperty("mail.smtp.port", "587"); //設定成465不可以傳送,設定成587可以 // 獲取預設session物件 /** *這部分設定很正要,很多郵箱都需要這個驗證 **/ Session session = Session.getDefaultInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( "[email protected]", "zpyqxakezptyfcdh");// Specify the Username and the PassWord } }); session.setDebug(true); try{ // 建立預設的 MimeMessage 物件 MimeMessage message = new MimeMessage(session); // Set From: 頭部頭欄位 message.setFrom(new InternetAddress(from)); // Set To: 頭部頭欄位 /** *TO是傳送 *BCC是密送 *CC是抄送 **/ message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 頭部頭欄位 message.setSubject("This is the Subject Line!"); // 設定訊息體 message.setText("這是一封郵件正文帶圖片" +"<img src='http://editerupload.eepw.com.cn/201809/61001537857032.jpg'>的郵件"); // 傳送訊息 Transport.send(message); System.out.println("Sent message successfully...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
收取郵件不完整程式碼
PS:沒有解析部分
package test;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.*;
public class test2{
{
String pop3Server = "pop.qq.com";
String protocol = "pop3";
String username = "[email protected]";
String password = "zpyqxakezptyfcdh";
Properties props = new Properties();
props.setProperty("mail.transport.protocol", protocol); // 使用的協議(JavaMail規範要求)
props.setProperty("mail.pop3.host", pop3Server);
props.setProperty("mail.pop3.ssl.enable", "true");
props.setProperty("mail.pop3.port", "995");
props.setProperty("mail.auth", "true");
Session session = Session.getDefaultInstance(props,new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"[email protected]", "zpyqxakezptyfcdh");
}
});
session.setDebug(false);
Store store=null;
try {
store = session.getStore(protocol);
store.connect(pop3Server, username, password);
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
Folder folder =null;
try {
folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();
for (Message message : messages) {
String subject = message.getSubject();// 獲得郵件主題
Address from = (Address) message.getFrom()[0];// 獲得傳送者地址
System.out.println("郵件的主題為: " + subject + "\t發件人地址為: " + from);
System.out.println("郵件的內容為:");
message.writeTo(System.out);// 輸出郵件內容到控制檯
}
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(folder!=null) {
folder.close(false);
}
if(store!=null) {
store.close();
}
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
自動被識別為垃圾郵箱
這個問題不是很嚴重,前臺有提示就成。 謝謝觀看,如果能提出合理的意見就更好了。