1. 程式人生 > >JAVA學習---QQ傳送郵件與接收

JAVA學習---QQ傳送郵件與接收

QQ郵箱的設定

PS:菜鳥一個,只是為了防止犯下同一個錯誤,所以,寫了這個部落格,歡迎大家多提意見,雖然我不一定會聽,但我一定認真考慮。

第一步:QQ郵箱的設定

話不多說,直接配置: 登入QQ郵箱後,進入設定頁面, 進入設定頁面的方法 在最上面一行, 點選“賬戶” 賬戶選單下,最下邊有四個服務,開啟pop/smtp或imap/smtp這兩個,開啟這兩個就可以了。

開啟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();
			}
		}
		
	}

程式碼執行結果

自動被識別為垃圾郵箱

這個問題不是很嚴重,前臺有提示就成。 謝謝觀看,如果能提出合理的意見就更好了。