分享
 
 
 

Java Mail API及其应用 —— 一个邮件列表服务器的实现 (二)(转贴)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

邮件列表服务经常用于为工作组提供基于email的讨论环境,订阅者通过它讨论共同感爱好的问题。

本文提供的示例程序ListServer是一个简单的邮件列表转发服务器:它从指定帐号读取新邮件并发送给所有订阅者。Java Mail API不仅使得实现其基本功能相当简单(使用缺省的POP3和SMTP),而且保证了程序易于支持任何可能碰到的系统环境。

运行该程序需要包含以下支持文件:Java Mail (mail.jar)、JAF(activation.jar)以及缺省的POP3支持(pop3.jar),如下面DOS批命令文件所示(这些JAR文件可以从Sun的Java Mail主页下载,参见相关资源):

@echo off

PATH .;d:\jdk1.1\bin

set CLASSPATH=.;d:\jdk1.1\lib\classes.zip;activation.jar;mail.jar;pop3.jar

java ListServer %1 %2 %3 %4 %5 %6 %7 %8 %9

程序启动后先由main()过程读取命令行参数,如邮件服务器、邮件帐号、更新周期等。接下来创建ListServer实例,最后进入“读取新邮件并转发给订阅者/等待直到下一次检查时间到来”无限循环。ListServer的核心功能(即读取和转发所有新邮件)在process()过程实现,其主要操作过程为:

◆获取javax.mail.Session实例,并进而获得javax.mail.Store实例。

◆利用javax.mail.Store实例获得缺省收件箱(INBOX)javax.mail.Folder实例。

◆使用javax.mail.Folder对象提取新邮件,存储为javax.mail.Message对象数组。

◆创建javax.mail.FetchProfile以(潜在地)优化对特定邮件组成成分的提取。

请注重此处javax.mail.FetchProfile类的应用。FetchProfile类提供邮件协议提供者特有可选参数,其目的是更有效地实现邮件组成成分的预提取。Java Mail API鼓励延迟提取邮件成分——即仅在真正需要的时候才提取。这不仅有利于改善系统的响应时间,某些操作(如显示邮件标题列表)也能够从中得到好处。下面代码说明了FetchProfile的基本用法:

// 提取所有邮件的属性和标记

Message[] messages = folder.getMessages();

FetchProfile fp = new FetchProfile();

fp.add(FetchProfile.Item.ENVELOPE);

fp.add(FetchProfile.Item.FLAGS);

fp.add("X-Mailer");

folder.fetch(messages, fp);

sendMsg()过程由processMsg()调用,负责分析指定收件并将它转发给所有订阅者。它首先获得缺省Session实例,然后创建javax.mail.Transport对象发送消息:

// 设置属性并获得缺省进程实例

Properties props = new Properties();

props.put("mail.smtp.host", _smtpHost);

Session session = Session.getDefaultInstance(props, null);

......

// 发送消息

Transport transport = session.getTransport(SMTP_MAIL);

transport.connect(_smtpHost, _user, _passWord);

transport.sendMessage(newMessage, _toList);

邮件字段(如收件人、发件人、邮件主题和日期等)的设置方法如下:

// 创建新邮件 Address replyToList[] = { new InternetAddress(replyTo) };

Message newMessage = new MimeMessage(session);

if (_fromName != null)

newMessage.setFrom(new InternetAddress(from,

_fromName + " / " + replyTo));

else

newMessage.setFrom(new InternetAddress(from));

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有