Perl Email处理几个模块之间的关系

来源:互联网 发布:linux redis主从配置 编辑:程序博客网 时间:2024/06/10 20:36

Email::Simple - 用来简单解析RFC2822消息格式和头。想要了解RFC2822格式的可以参考http://www.faqs.org/rfcs/rfc2822.html。 这个模块的名字觉得怪怪的,总觉得是个例子一样。不过这个模块的意图就是为了满足简单的邮件处理的需要但又不想引入太过复杂模块中存在的一些bug。 使用起来方便简单,但局限是仅仅能处理RFC2822格式的邮件。

一般用来解释邮件内容或者构建RFC2822格式内容的邮件。

简单使用例子:

use Email::Simple;

use strict;
use warnings;

my $rfc_2822 = <<'END_2822';
From: John Doe <jdoe@machine.example>
To: Mary Smith <mary@example.net>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <1234@local.machine.example>

This is a message just to say hello.
So, "Hello".
END_2822

my $mail = Email::Simple->new($rfc_2822);

foreach my $header_item qw(Subject From To Date) {
  printf "%-8s: %-30s\n", $header_item, $mail->header($header_item);
}
print "\n";
print $mail->body;


下面这三个模块在一起讲述:

Email::Folder::Exchange

Access your Microsoft Exchange 2000/2003/2007/2010 email from perl
Email-Folder-Exchange-2.0 -30 Jan 2011 -Warren Smith

Email::Folder::Exchange::EWS

Email::Folder access to exchange folders via Web Services [SOAP]
Email-Folder-Exchange-2.0 -30 Jan 2011 -Warren Smith

Email::Folder::Exchange::WebDAV

Email::Folder access to exchange folders via WebDAV
Email-Folder-Exchange-2.0 -30 Jan 2011 -Warren Smith

这三个模块的大体作用通过上面的意思已经可以看出,第一个是说通过exchange方式访问email,而第二个是通过SOAP访问exchange folder,而第三个则是通过WebDAV形式。

WebDAV上一篇文章中已经有介绍了,exchange不熟悉的话可以去度娘。


备注附录一些背景信息:

Microsoft Exchange: 微软交换服务器 是一款邮件服务器软件,用户除了使用Outlook 客户端,也可以使用 Internet Information Services (IIS) 管理器简化用户访问其 Microsoft Exchange Server 2013 邮箱所使用的 Microsoft Outlook Web App URL。即Outlook 网页版。Exchange是服务器端的软件,而Outlook是其客户端的软件。Outlook不仅仅可以作为Exchange的客户端,还可以接收其他支持Pop3等的邮件,当然,Exchange邮件接收方式也不仅仅局限于使用Outlook,你也可以使用Foxmail等其他软件,也可以通过Web方式使用OWA方式接收。

回到正题,这三个模块之间是什么关系呢。Email::Folder::Exchange 是后面连个模块的wrapper。这个模块首先通过EWS链接服务器,如果返回404错误,则试图用WebDAV连接。

Email::Folder::Exchange的使用方法:

use Email::Folder::Exchange;        # Access Exchange 2000/2003 via WebDAV  my $folder = Email::Folder::Exchange->new('http://owa.myorg.com/user/Inbox', 'user', 'password');//看出与下面的区别了吗?多了什么        # Access Exchange 2007/2010 via Exchange Web Services  my $folder = Email::Folder::Exchange->new('http://owa.myorg.com', 'user', 'password');//邮箱OWA方式访问的link  for my $message ($folder->messages) {    print "subject: " . $subject->header('Subject');  }  for my $folder ($folder->folders) {    print "folder uri: " . $folder->uri->as_string;    print " contains " . scalar($folder->messages) . " messages";    print " contains " . scalar($folder->folders) . " folders";  }

三个模块的方法有一些细微的区别,具体可以上CPAN上看。

还有一个模块,Email::Folder;从一个文件夹中读取Email::Simple所支持的邮件信息。

Email::FolderType:这个是获取邮件FolderType的信息。

关于邮件传输协议:STMP:http://zh.wikipedia.org/wiki/%E7%AE%80%E5%8D%95%E9%82%AE%E4%BB%B6%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE

POP3 :http://zh.wikipedia.org/wiki/%E9%83%B5%E5%B1%80%E5%8D%94%E5%AE%9A

POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。(与IMAP有什么区别?)

SMTP

SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。   增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

IMAP :http://zh.wikipedia.org/wiki/IMAP

IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

再加上一个模块:

Mail::Outlook: 这个模块的作用就是用来处理Microsoft (R) Outlook (R).

具体模块的信息可以在CPAN上找到。http://search.cpan.org/~duncan/Mail-Outlook-0.22/lib/Mail/Outlook.pm


Mail::Outlook::Folderextension to handle Microsoft (R) Outlook (R) mail folders.   0.21Mail::Outlook::Messageextension to handle Microsoft (R) Outlook (R) mail messages.  




0 0
原创粉丝点击