標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 音樂 (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) FI (57) File Transfer (1) Firefox (2) FM (2) fourjs (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 (3) JavaScript (22) jQuery (6) JSON (1) K3b (1) LED (3) Linux (112) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) Oracle (125) Outlook (3) PDF (6) Perl (59) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (1) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (22) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (33) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) youtube (1) yum (2)

2013年11月17日 星期日

使用Perl forward echange mail

#!/usr/bin/perl

#use strict;
#use warnings;
#use Authen::NTLM;
use Mail::IMAPClient;
use Mail::IMAPClient::BodyStructure;
use MIME::Parser::Filer;
use Encode;
use Mail::Sendmail;

my $username = "xxx";
my $password = "yyy";
my $file = "message.idx";
my $msg;
my $nextMsg;

## Settings for connecting to IMAP server
my $imap = Mail::IMAPClient->new(
    Server            => 'mail1.bigsun-energy.com',
    User              => $username,
    Password          => $password,
    Port              => 143,
    Debug => 1
) or die "Cannot connect through IMAPClient: $@\n";

$imap->select("INBOX");
my @messages = $imap->messages;
my $filer    = MIME::Parser::FileInto->new();
print "There are " . scalar @messages . " messages waiting.\n";

open IN,$file;
while (my $line = <IN>) {
   $msg = $line;
}
close IN;

for (my $i=0 ; $i<=$#messages ; $i++) {
   if ($messages[$i] > $msg) {
      print "Processing $messages[$i]...\n";
      $nextMsg = $messages[$i];
     
      my $hashRef = $imap->parse_headers($messages[$i],"ALL");
      my $aryRef = $hashRef->{"Content-Type"};
      my $contentTypes = join ",",@$aryRef;
     
      my ($contentType) = $contentTypes =~ m/^(.*);/;
      my ($boundary) = $contentTypes =~ m/"(.*)"/;
     
      my $ref = $hashRef->{From};
      my $from = join ",",@$ref;
      #$from =~ s/<|>//g;
     
      my $msg_subject = Encode::decode( 'MIME-Header', $imap->subject($messages[$i]) );
      my $msg_body = $imap->body_string($messages[$i]);
      my @lines = split /\n/,$msg_body;
      pop @lines;pop @lines;
      $msg_body = join "\n",@lines;     
     
      my %mail = ( To      => 'zzz@www',
                   From    => 'aaa@bbb',
                   Subject => "Fwd : ".$msg_subject." [From : $from]"
                 );
      $mail{smtp} = "mail1.ccc";
      $mail{'content-type'} = "$contentType; boundary=\"$boundary\"";  

      $mail{body} = <<END_OF_1;
$msg_body
END_OF_1
      sendmail(%mail) if not $from =~ /sysadmin/;
      #print "$mail{body}";
      #print "\n############################\n$contentType; boundary=\"$boundary\"\n";
      #print "\n############################\n$mail{body}\n";
      $i = $#messages;
   }
}

$imap->close();

open OUT,">$file";
print OUT $nextMsg;
print "#############\n$nextMsg\n";
close OUT;

沒有留言:

張貼留言