`
Mybeautiful
  • 浏览: 298522 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

分享一个收邮件的类,使用相当简单。

阅读更多

   分享一个收邮件的类,演示Iterable的用法,实现自己的Iterator,  该类使用非常简单,如下:

 

 

 

		Properties mailPr = new Properties();
		mailPr.setProperty("Pop3Host","pop3.sina.com.cn");
		mailPr.setProperty("User",” ××××@sina.com.cn“);
		mailPr.setProperty("Password", “×××××”);

		mr = new MailReceiver(mailPr);



		mr = new MailReceiver(mailPr);
		try {
			mr.read();
//遍历所有邮件
                	for (Iterator<Message> iter = mr.iterator(); iter.hasNext();) {
				Message msg = iter.next();
         //msg 就是读出的邮件

                         }
		} catch (MessagingException e1) {
			e1.printStackTrace();
			return;
		}

 

 

  主要包含了两个类,如下,

  1 .   MailReceiver.java 

 

package zhang.stony.mail;

import java.util.Iterator;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;

/**
 * @author Stony Zhang
 * @E-Mail stonyz@live.com
 * @QQ 55279427
 * @Createdate 2009-9-5
 * 
 * @Copyright the author, If you want to use the code, you must keep the
 *            author's information.
 */
public class MailReceiver implements Iterable<Message> {
	private Session session;
	MailSetting mSetting;

	public MailReceiver(Properties p) {
		mSetting = new MailSetting(p);
		final String username = mSetting.getUser();
		final String password = mSetting.getPassword();
		Properties props = new Properties();
		props.put("mail.smtp.host", mSetting.getPop3Host());
		props.put("mail.smtp.auth", "true");
		session = Session.getDefaultInstance(props, new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username, password);
			}
		});
	}

	Folder folder = null;
	Message[] message;
	Store store;

	public void read() throws MessagingException {
		store = session.getStore("pop3");
		store.connect(mSetting.getPop3Host(), mSetting.getUser(), mSetting
				.getPassword());
		folder = store.getFolder("INBOX");
		folder.open(Folder.READ_WRITE);
		message = folder.getMessages();

	}

	public void close() throws MessagingException {
		if (folder != null) {
			try {
				folder.close(true);
			} catch (Exception e) {
			}

			store.close();

		}
	}

	public Iterator<Message> iterator() {
		return new Iter();
	}

	private class Iter implements Iterator<Message> {
		int currrent_msg_index=0;
		Message curMsg;

		public boolean hasNext() {
			return currrent_msg_index <= message.length - 1;
		}

		public Message next() {
			curMsg = message[currrent_msg_index++];
			return curMsg;
		}

		public void remove() {
			try {
				curMsg.setFlag(Flags.Flag.DELETED, true);
			} catch (MessagingException e) {
				e.printStackTrace();
			}
		}
	}

}

 

 

   2. MailSetting.java

 

package zhang.stony.mail;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * @author Stony Zhang  
 * @E-Mail stonyz@live.com 
 * @QQ 55279427 
 * @Createdate 2009-9-5 
 *
 * @Copyright, everyone can use the code freely, but you must keep the author's information.
 */
public class MailSetting {
	private String smtpHost;
	private String pop3Host;
	private String user ;
	private String password;

	
	public MailSetting(String configFile){
		try {
			InputStream in = new FileInputStream(configFile);
			
			Properties prop = new Properties();
			prop.load(in);
			setPropertiesAttri(prop);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public MailSetting(Properties pr){
		setPropertiesAttri(pr);
	}
	
	public MailSetting(String host,String u,String p){
		this.smtpHost=host;
		this.user=u;
		this.password=p;
	}
	
	private void setPropertiesAttri(Properties prop) {
		try {
//			String conf = AppContest.getStartupPath() + "config/MailSetting.properties";


			this.setSmtpHost(prop.getProperty("SmtpHost"));
			this.setPop3Host(prop.getProperty("Pop3Host").toString());
			this.setUser(prop.getProperty("User").toString());
			this.setPassword(prop.getProperty("Password").toString());
		} catch (Exception ex) {
			System.err.println("ex1 in MailSetting:" + ex.toString());
		}
	}
	
	
	public String getSmtpHost() {
		return smtpHost;
	}

	public void setSmtpHost(String smtpHost) {
		this.smtpHost = smtpHost;
	}
	public String getPop3Host() {
		return pop3Host;
	}
	
	public void setPop3Host(String pop3Host) {
		this.pop3Host = pop3Host;
	}

	public String getUser() {
		return user;
	}

	public void setUser(String user) {
		this.user = user;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}

 

 

    关于JavaMail发送邮件,请参阅 JavaMail发送html格式的邮件

0
0
分享到:
评论
1 楼 Mybeautiful 2011-05-11  
注意:1.当smpt和pop 服务器不同时,如果要使用message.reply(),必须要同时设置pop和smtp服务器。
     2.对需要ssl加密的,代码需要略加改动,google一下很多,这里不列出了。

相关推荐

    java+mysql实现的代码分享网(所有源码已开源,效果可看网址:www.admintwo.com)

    分词功能(点击某一个分享,进入详情页的时候,会对该分享名称进行分词,并且加入到head中,利于网站seo)。 可能还有一些其他功能,通过查看源码可了解。 网站技术介绍: 1、采用语言,java 2、后台框架,struts2+...

    Net Mail Disk

    "Net Mail Disk"是一款创新的软件,它将用户的电子邮件账户转变为一个功能强大的网络存储空间,有效地解决了传统邮件系统附件大小限制的问题。通过这款工具,用户能够上传并存储各种大文件,如软件、高清电影、音乐...

    cmd2exe.rar

    这样,我们就能得到一个独立、可执行的程序,无论是在邮件附件中分发,还是在不熟悉命令行的用户之间分享,都变得更加安全和直观。 **使用cmd2exe** cmd2exe的使用相当简单。首先,你需要下载并解压"cmd2exe.rar...

    smtp mime格式发送邮件可发附件

    main.cpp 就一个cpp文件 //1.首先需要连接邮件服务器 这里用socket 邮件服务器端口 25 //2.现在就是和服务器对话了 //3.结束 #include #include #include #include #include #include #include #include #...

    圣诞节快到了,写个电子贺卡吧

    4. **发送与分享**:完成设计后,贺卡可以通过电子邮件、社交媒体或其他在线平台分享。这涉及到网络通信的知识,如HTTP协议、SMTP(简单邮件传输协议)用于发送电子邮件。 5. **响应式设计**:考虑到电子贺卡可能在...

    Linux操作系统基础教程

    我们并不能使同学们通过这次系列讲座成为一个 UNIX 类操作系统的高手,这次系列 讲座的目的就是在同学们中间普及 Linux 基础知识,为今后我们更加接近的了解 Linux 做一 个好的开端。 第一讲 Linux基础 在这一...

    局域网内发送文件好帮手-飞鸽传书

    这意味着用户可以直接选择一个包含多个文件和子文件夹的目录,一次性传输给接收方,大大节省了操作步骤和时间。这种功能对于需要共享项目资料、工作文档或者大量图片的用户来说极其实用,避免了因打包解压过程中可能...

    专题资料(2021-2022年)43种网站低成本推广技巧.doc

    - 使用QQ群发软件,批量向多个QQ群发送网站信息,扩大覆盖面。 7. **广告交换**: - 与流量相当或内容互补的网站交换广告,实现共赢。 8. **网址导航收录**: - 将网站提交到各种网址导航站,提高网站的可见度...

    飞鸽传书工具

    《飞鸽传书:局域网内的高效通讯与文件共享利器》 ...无论你是需要快速分享文件,还是想要建立一个团队协作的平台,飞鸽传书都能为你提供有力的支持。这款小巧而强大的软件,值得每一位局域网用户拥有。

    ipmsg2005_jp

    如Slack、微信工作等新型即时通讯工具的出现,IPMSG2005_jp在功能性和用户体验上可能略显落后,但对于那些追求简单、高效且无需额外服务器支持的局域网通信解决方案的用户来说,它依然是一个值得考虑的选择。...

    Print2Flashx64.zip

    使用Print2Flash x64的过程相当简单:用户只需像平常一样选择“打印”选项,然后将Print2Flash x64设为默认打印机。软件会捕获打印输出,并将其转化为SWF文件,这个过程中可以设置不同的参数,如输出质量、颜色模式...

    PHP留言板,有较强的可移植性

    6. **邮件通知**:留言板可能提供邮件通知功能,当有新留言时,管理员会收到电子邮件提醒。 7. **分页显示**:为了提高用户体验,大量的留言通常会被分页显示,PHP的分页技术在这里起到关键作用。 8. **插件扩展**...

    飞秋文件传送工具

    飞秋(FeiQ)是一款在局域网内广泛使用的文件快速传输工具,以其高效、稳定和便捷的特点深受用户喜爱。这款软件的核心功能是提供高速的文件传输服务,最高可达每秒10MB的速度,极大地提高了工作效率,尤其适合在公司...

    acd see 10.0

    这款2009年的版本在当时已经具备了相当完善的功能集,对于摄影爱好者和专业摄影师来说,它是一个不可或缺的工具。 **快速查看与搜索** ACDSee 10.0的一大亮点是其快速查看能力。用户无需等待照片完全加载,就能...

    速度最快的飞鸽传书软件

    相比传统的邮件附件、FTP或其他文件分享方式,飞鸽传书利用了P2P(点对点)技术,直接将文件从发送方的计算机发送到接收方的计算机,跳过了中心服务器,大大减少了传输延迟,实现了近乎实时的数据交换。这种高速传输...

    Flogman - Foto bLOG Mail is All you Need-开源

    【Flogman - Foto bLOG Mail is All you Need】是一个开源项目,专为那些希望通过电子邮件便捷上传图片至个人照片日志或类似婴儿图片网站的用户设计。这个Java应用程序简化了内容发布流程,允许用户在任何有邮件服务...

    Cisco Jabber_v12.6.1.284387_apkpure.com.zip

    语音邮件功能则为那些无法立即接听电话的用户提供了一个解决方案。通过Cisco Jabber,用户可以录制并发送语音信息,收件人可以在方便的时候听取,避免了错过重要信息的情况。 桌面共享功能进一步增强了协作性。用户...

Global site tag (gtag.js) - Google Analytics