標籤

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 (120) 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 (131) 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 (3) 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)
顯示具有 IMAP 標籤的文章。 顯示所有文章
顯示具有 IMAP 標籤的文章。 顯示所有文章

2013年11月17日 星期日

如何建立與 Outlook 相容的 IMap 目錄

http://www.vixual.net/blog/archives/65

原因

請參考這一篇…

中文信件匣名稱的編碼、解碼

拜 Google 所賜,原來 “寄件備份” 及 “草稿” 變成了 “&W8RO9lCZTv0-” 及 “&g0l6Pw-” 是經過了 “UTF-8” + “UTF-7” 編碼所致,下面就是編碼及解碼的程式片段(你必須先安裝 Unicode::IMAPUtf7 模組):
use Unicode::IMAPUtf7;
my $IMAPUtf7 = Unicode::IMAPUtf7->new();
#編碼
$encode = $IMAPUtf7->encode('寄件備份');
#解碼
$decode = $IMAPUtf7->decode($encode);
請注意,轉換中文名稱前須自行轉換為 UTF-8 編碼 (關於 Big5 及 UTF-8 編碼之轉換,請參考這一篇)。

使用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;

2013年8月16日 星期五

IMAP command

[dwmgr@misdwp01 ~]$ telnet mail1.xxx 143
Trying xxx.xxx.xxx.xxx...
Connected to mail1.xxx.
Escape character is '^]'.
* OK The Microsoft Exchange IMAP4 service is ready.

Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx.
Escape character is '^]'.
* OK The Microsoft Exchange IMAP4 service is ready.
A login xxx@xxx.xxx xxx
A OK LOGIN completed.
B select INBOX
* 0 EXISTS
* 0 RECENT
* FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)
* OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent flags
* OK [UIDVALIDITY 66390] UIDVALIDITY value
* OK [UIDNEXT 896] The next unique identifier value
B OK [READ-WRITE] SELECT completed.
C logout
* BYE Microsoft Exchange Server 2010 IMAP4 server signing off.
C OK LOGOUT completed.
Connection closed by foreign host.