用Perl编写读取POP3邮箱的应用程序

本文将讨论开发人员利用Perl特定的能力编写POP3电子邮件应用程序。 数据挖掘论坛

像微软的Outlook和Mozilla的雷鸟(Thunderbird)这样的电子邮件客户端程序能够让收发电子邮件变得极其简单——绝大多数时候,你需要做的只不过是点击一下工具条上的按钮,软件会为你完成与电子邮件服务器进行通信、验证密码、收取电子邮件等复杂的工作。

数据挖掘研究院

但是在这种具有欺骗性的简单表象背后却牵涉大量的软件编程工作。而且,如果你是一个软件开发人员,你可能有一天会发现如果能够把这样的程序放到自己的应用程序会有多好啊。 数据挖掘实验室

不用担心那么多,因为如果你在使用Perl,那么你就可以利用一个叫做Net::POP3的小CPAN模块来实现这一愿望,这个十分有用的模块会为你完成大多数复杂的工作。这个模块向POP3服务器的交互操作公开一个简单但是非常强大的API,提供一些预设的方法来进行服务器身份验证、消息列表和收取、消息删除,以及结束会话——简而言之,它提供了满足用户基本需要的一切。 数据挖掘实验室

注:列表A到C里的代码文本可以从可下载的Zip文件里获得。

数据挖掘研究院

本文将通过使用Net::POP开发一个简单的POP3电子邮件应用程序来探讨它的一些功能。一开始你需要在Perl提示符下运行下面的命令来下载和安装这个模块(如果你还没有的话):

perl> perl -MCPAN -e "install Net::POP3" 数据挖掘工具

开始创建下面的Perl脚本(列表A):

数据挖掘工具

列表A

#!/bin/perl

数据挖掘研究院

# import package
use Net::POP3; 数据挖掘交友

# ask user for critical variables
print "Mail host: ";
$host = <STDIN>;
chomp($host);

数据挖掘交友

print " ";
print "Mailbox username: ";
$user = <STDIN>;
chomp($user); 数据挖掘研究院

print " ";
print "Mailbox password: ";
$pass = <STDIN>;
chomp($pass); 数据挖掘工具

# initiate connection
# default timeout = 120 sec
$conn = Net::POP3->new($host) or die("ERROR: Unable to connect. ");

数据挖掘实验室

# login
$numMsg = $conn->login($user, $pass) or die("ERROR: Unable to login. "); 数据挖掘实验室

# display number of messages
if ($numMsg > 0) {
    print "Mailbox has $numMsg message(s). ";
} else {
    print "Mailbox is empty. ";
} 数据挖掘研究院

# close connection
$conn->quit(); 数据挖掘实验室

这个代码段会要求用户输入三个内容:电子邮件服务器的主机名、POP3用户名和相应的密码。一旦输入了这三项内容,一个新的Net::POP3对象就会被创建,而对象的login()方法会被用来打开一个到主机的连接,并验证所提供的凭据。如果提供的凭据被服务器认可,那么login()方法就会返回邮箱里的消息数量(或者返回0,如果没有消息的话)。

下面就是它的一个实际例子:

Mail host: pop.mailbox.com
Mailbox username: jane
Mailbox password: secret

数据挖掘论坛

Mailbox has 77 message(s). 数据挖掘论坛

当然,仅仅知道消息的数量是远远不够的——你肯定希望知道这些消息的内容。通过Net::POP3的top()方法就能够达到这个目的,它会扫描消息的前X行,并返回一个指向含有已收取数据的数组的参考。下面就是一个例子,(列表B)会取回邮箱里所有消息的前20行: 数据挖掘工具

列表B 数据挖掘交友

#!/bin/perl 数据挖掘实验室

# import package
use Net::POP3;

数据挖掘交友

# ask user for critical variables
print "Mail host: ";
$host = <STDIN>;
chomp($host);

print " ";
print "Mailbox username: ";
$user = <STDIN>;
chomp($user);

print " ";
print "Mailbox password: ";
$pass = <STDIN>;
chomp($pass); 数据挖掘工具

# initiate connection
# default timeout = 120 sec
$conn = Net::POP3->new($host) or die("ERROR: Unable to connect. "); 数据挖掘论坛

# login
$numMsg = $conn->login($user, $pass) or die("ERROR: Unable to login. ");

# get message numbers
# iterate over list and print first 20 lines of each
if ($numMsg > 0) {
    $msgList = $conn->list();
    foreach $msg (keys(%$msgList)) {
        $ref = $conn->top($msg, 20);
        print @$ref;
        print " ";
    }
} else {
    print "Mailbox is empty. ";   
} 数据挖掘论坛

# close connection
$conn->quit();

你可以使用get()方法而不用top()方法,从而收取完整的消息。 数据挖掘工具

如果你希望的话,你可以在命令行通过Getopt::Long模块把服务器的参数传递给程序,下面的列表C显示了这个模块: 数据挖掘研究院

列表C

#!/bin/perl

# import packages
use Net::POP3;
use Getopt::Long;

数据挖掘实验室

# read command line options
# display usage message in case of error
GetOptions ("h|host=s" => $host,
            "u|user=s" => $user,
            "p|pass=s" => $pass) or die("Input error. Try calling me with: -h <host> -u <username> -p <password>");

# initiate connection
# default timeout = 120 sec
$conn = Net::POP3->new($host) or die("ERROR: Unable to connect. "); 数据挖掘研究院

# login
$numMsg = $conn->login($user, $pass) or die("ERROR: Unable to login. ");

数据挖掘交友

# get message numbers
# iterate over list and print first 20 lines of each
if ($numMsg > 0) {
    $msgList = $conn->list();
    foreach $msg (keys(%$msgList)) {
        $ref = $conn->top($msg, 20);
        print @$ref;
        print " ";
    }
} else {
    print "Mailbox is empty. ";   
}

数据挖掘工具

# close connection
$conn->quit(); 数据挖掘论坛

这些代码模板会告诉你如何把Net::POP3集成到需要处理电子邮件的应用程序里。自己动手试试吧,祝你编程愉快!

数据挖掘交友

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:Perl直接入门详尽指南
下一篇:用Perl编写读取POP3邮箱的应用程序
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • Perl 常用函数
  • Perl直接入门详尽指南
  • 用Perl生成随机密码
  • When perl is not quite fast enough
  • Perl简单模块指南
  • Perl DBI连接MySQL数据库
  • 我对 Catalyst 的理解和介绍
  • cgi学习简明教程
  • 我对 Catalyst 的理解和介绍
  • 如何使用strict和warnings
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
    数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静