JavaMail教程(三)-接收邮件

本文介绍了如何使用JavaMail通过POP3协议接收邮件,包括输出收件箱信息和邮件内容。在实际操作中,126邮箱被推荐使用,因为它默认支持POP3功能。同时,文章提到了在使用QQ邮箱时可能遇到的问题,即邮件总数显示不准确。此外,还列举了参考的JavaMail系列学习笔记。
摘要由CSDN通过智能技术生成

1.接收邮件

1.1使用POP3接收邮件

1.1.1输出收件箱信息

package org.ygy.demo;

import java.util.Properties;

import javax.mail.Folder;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;

public class ReceiveMail {
	public static final String HOST = "pop.126.com";//服务器地址
	public static final String PROTOCOL = "pop3";//协议
	public static final String PORT = "110";//pop默认端口为110
	public static final String USER = "xxx@126.com";//账户
	public static final String PASSWORD = "xxx";	//密码
	
	/**
	 * 输出收件箱的基本信息
	 */
	public void displayFolderInfo() {
		Properties props = new Properties();
		props.put("mail.pop3.host", ReceiveMail.HOST);//设置服务器地址
		props.put("mail.store.protocol" , ReceiveMail.PROTOCOL);//设置协议
		props.put("mail.pop3.port", "110");//设置端口
		
		Session session = Session.getDefaultInstance(props);
		Store store = null;
		Folder folder = null;
		try {
			store = session.getStore();
			store.connect(HOST , USER , PASSWORD);
			
			/*
			 * POP3 supports only a single folder named "INBOX".
			 * POP协议的话,这里只能是INBOX
			 */
			folder = store.getFolder("INBOX");
			folder.open(Folder.READ_ONLY);//以只读方式打开收件箱
			
			System.out.println("邮件总数:" + folder.getMessageCount());
			
			//由于POP3协议无法获知邮件的状态,所以getUnreadMessageCount()得到的是收件箱的邮件总数 
			System.out.println("未读邮件数:" + folder.getUnreadMessageCount());
			
			//由于POP3协议无法获知邮件的状态,所以下面得到的结果始终都是为0
			System.out.println("删除邮件数:" + folder.getDeletedMessageCount());
			System.out.println("新邮件数:" + folder.getNewMessageCount());
		} catch (NoSuchProviderException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		} finally {
			try {
				folder.close(false);
				store.close();
			} catch (MessagingException e) {
				e.printStackTrace();
			}
			
		}
		
	}
	
	public static void main(String[] args) {
		ReceiveMail receive = new ReceiveMail();
		receive.displayFolderInfo();
	}
}

结果显示如下图:



这时,你可以通过浏览器登录“126邮箱”删除几封邮件,再运行测试一下,数据都是正确的。126邮箱默认都打开了POP/SMTP功能,可以设置的。


注:126邮箱比较好用,之前使用QQ邮箱时,获取的”邮件总数“总是不对,结果显示只有16封,但是用浏览器登录QQ邮箱,可以看到一共有200多封,不知道还需要设置什么委屈。输出邮件内容之后,发现好像只有2013年的,疑问

1.1.2输出邮件信息

package org.ygy.demo;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.NoSuchProviderException;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddres
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值