標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (117) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (126) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2013年8月16日 星期五

Mail::Box


http://search.cpan.org/~markov/Mail-Box/

http://quark.humbug.org.au/publications/perl/perlmailbox.html

Perl provides a number of interfaces to mailbox folders of which Mail::Box is but one. This article will cover the basic use of it and show how to open a mailbox folder, be it a flat file or over POP or IMAP, and how to manipulate the messages inside.

Modules

First you need to import the required modules - in most cases this will be sufficient:
use Mail::Box::Manager;

Opening Mailboxes

This section will cover how to open mailboxes of 3 different formats - mbox, POP and IMAP.

Mbox Format

To open a mbox folder, simply do the following:
my $mailspool = "/var/spool/mail/username";
my $mgr    = Mail::Box::Manager->new;
my $folder = $mgr->open(folder => $mailspool);

POP3

There are two ways to open a POP folder, as follows:
my $url = 'pop3://user:password@pop.example.com'
my $pop = Mail::Box::POP3->new($url);

my $mgr    = Mail::Box::Manager->new;
my $pop = $mgr->open(type => 'pop3',
            username => 'myname',
            password => 'mypassword',
            server_name => 'pop.example.com');

IMAP4

IMAP folders are opened similarly to POP, as follows:
my $imap   = Mail::Box::IMAP4->new(username => 'myname', 
                     password => 'mypassword',
                     server_name => 'imap.example.com');

my $url    = 'imap4://user:password@imap.example.com');
my $mgr    = Mail::Box::Manager->new;
my $imap   = $mgr->open($url);

Manipulating Folders

To find out the name of the folder you're accessing, simple do the following:
$name = $folder->name;
To check the number of messages in the folder, just:
my $emails = $folder->messages;
To loop over each message simply call the messages subroutine in array context, like so:
foreach $msg ($folder->messages) { # all messages
    # Do something with $msg
}
To extract basic information from a message, such as subject, to, from and the body, simply use the following:
my $subject = $msg->subject;
my @to = $msg->to;
my $from = $msg->sender->address;
my $body = $msg->decoded;
The array returned from the to subroutine consists of Mail::Address objects. To pull the actual address out of it, something like the similar will do:
foreach $to (@to) {
    print "to = ".$to->format."\n";
}

Conclusion

As you can see, Mail::Box provides a very simple interface for pulling out basic information from a mailbox. You can do much more than is shown here, for more information see the perldoc for Mail::Box, Mail::Box-Overview and Mail::Box-Cookbook.

沒有留言:

張貼留言