Chinaunix

标题: 新手询问用perl收邮件问题 [打印本页]

作者: xfilesliuli    时间: 2013-04-28 17:31
标题: 新手询问用perl收邮件问题
今天刚看了下Net:OP3模块,本来想试下读邮件内容,因为公司内网都是用outlook,是exchange服务器,试了下貌似直接用exchange邮件服务器地址是不行的。
对邮件协议和邮件服务器完全不了解,有个问题希望大神用帮忙解释一下。
百度百科看了下:
POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。
Microsoft Exchange Server 2007是Microsoft Exchange Server的下一版本,它是业界领先的电子邮件、日历和统一信息服务器。

问题:
    使用exchange服务器地址,不能创建$pop3conn = Net:OP3->new('mail.example.com') ,是说明exchange邮件服务器不符合pop3协议么?  也就是说exchange邮件服务器和pop3邮件服务器完全是两个不同的东西? 还是说exchange 服务器可以配置不同的邮件协议?   
     编程基础较差,问的比较混乱,希望有人知道我在问什么。

  上CPAN看了下,有几个exchange收邮件的模块,后续再测试下。


作者: 兰花仙子    时间: 2013-04-28 22:48
回复 1# xfilesliuli


    exchange不是POP3协议哦,是MS自己的叫activesync

Exchange ActiveSync是一种微软 Exchange 同步协议,该协议可以访问服务器的邮件、日程、联系人,并且在脱机工作时仍可以继续访问这些信息。
作者: 小perl    时间: 2013-04-28 23:18
Perl还能收邮件啊
作者: anyevent    时间: 2013-04-29 07:53
小perl 发表于 2013-04-28 23:18
Perl还能收邮件啊

是的。

给楼主一个简单的例子:
  1. use AnyEvent;
  2. use AnyEvent::SMTP qw/smtp_server/;


  3. my $cv = AnyEvent->condvar;

  4. smtp_server undef, 25, sub {
  5.     my $mail = shift;
  6.     warn "Received mail from $mail->{from} to $mail->{to}\n$mail->{data}\n";
  7.     $cv->send;
  8. };

  9. $cv->recv;
复制代码

作者: xfilesliuli    时间: 2013-04-29 17:38
谢谢仙子!

回复 2# 兰花仙子


   
作者: xfilesliuli    时间: 2013-05-01 11:03
SMTP不是主要用来发邮件的么?

试了下Net:OP3,有个问题咨询下。
试了qq邮箱和163邮箱,对login返回的message数量一直搞不懂。
先通过QQ邮箱和163把邮件全部标记为已读,试下面的例子为什么会返回出XX封邮件啊?

是qq邮箱客户端等标记后pop3服务器上邮件状态不变么?还是说这个message返回有其他的规则?

麻烦哪位帮忙解答下,谢谢!

  1. my $host="pop.163.com";
  2. my $pop3conn=Net::POP3->new($host);

  3. print "The pop3 Server is : " . $pop3conn->host() . "\n";
  4. print "The banner is : " . $pop3conn->banner() . "\n";

  5. my $username="xxxxx\@163\.com";
  6. my $password="xxxxx";
  7. my $nummsgs = $pop3conn->login($username,$password);
  8. if ($nummsgs > 0) {
  9.         print "You've Got Mail!\n";
  10.         print "$nummsgs\n";

  11. #       foreach my $msg (keys %{$messages}) {
  12. #               print "Message $msg is $messages->{$msg} bytes\n";
  13. #       }

  14.         for (my $i=1;$i<=$nummsgs;$i++) {
  15. #               my $message = $pop3conn->get($i);
  16.                 my $message = $pop3conn->top($i);
  17.                 print "Message $i: ";
  18.                 print grep (/^Date:/, @{$message});

  19. #               print "@{$message}";
  20.                 print "retrieved message $i\n";
  21.         }
复制代码
执行结果:
The pop3 Server is : pop.163.com
The banner is : Welcome to coremail Mail Pop3 Server (163coms[8db726ec93e9d4e3e9a2fd3d31b05251s])

You've Got Mail!
18
Message 1: Date: Mon, 19 Nov 2012 23:38:39 +0800
retrieved message 1
Message 2: Date: Mon, 3 Dec 2012 04:06:27 +0800
retrieved message 2
Message 3: Date: Tue, 25 Dec 2012 22:08:57 +0800
retrieved message 3
Message 4: Date: Wed, 23 Jan 2013 02:27:16 +0800
retrieved message 4
Message 5: Date: 30 Jan 2013 03:13:22 +0800
retrieved message 5
Message 6: Date: Fri, 15 Feb 2013 04:23:16 +0800
retrieved message 6
Message 7: Date: Fri, 01 Mar 2013 11:14:21 +0800
retrieved message 7
Message 8: Date: Sun, 10 Mar 2013 23:51:06 +0800
retrieved message 8
Message 9: Date: Fri, 29 Mar 2013 15:02:00 +0800
retrieved message 9
Message 10: Date: Mon, 01 Apr 2013 18:34:45 +0800 (CST)
retrieved message 10
Message 11: Date: Mon, 15 Apr 2013 05:18:43 +0800 (CST)
retrieved message 11
Message 12: Date: Wed, 17 Apr 2013 09:28:32 +0800 (CST)
retrieved message 12
Message 13: Date: Fri, 19 Apr 2013 12:13:10 +0800 (CST)
retrieved message 13
Message 14: Date: Tue, 23 Apr 2013 07:04:10 -0500
retrieved message 14
Message 15: Date: Wed, 24 Apr 2013 17:24:17 +0800
retrieved message 15
Message 16: Date: Sun, 28 Apr 2013 11:03:45 +0800
retrieved message 16
Message 17: Date: Sun, 28 Apr 2013 18:48:07 +0800 (CST)
retrieved message 17
Message 18: Date: Tue, 30 Apr 2013 08:50:38 +0800 (CST)
retrieved message 18

回复 4# anyevent


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2