2014-04-15 2 views
0

Exchange 2010 서버에서 perl을 통해 메일을 자동으로 다운로드합니다. 지금까지 Exchange Web Services (EWS)를 통해 메시지에 액세스하고 헤더를 구문 분석했습니다. 이제 로컬 임시 폴더에 첨부 파일을 다운로드 할 수있는 방법이 궁금합니다.Perl을 사용하여 Exchange 메시지에서 첨부 파일 다운로드

필자는 Perl 언어에 익숙하지 않으며 메시지 데이터 구조에 대한 소스 코드 또는 문서를 찾을 수 없습니다. 어떤 도움을 주셔서 감사합니다.

use Email::Folder::Exchange; 
use Email::Simple; 

# some more code here.... 

my $folder = Email::Folder::Exchange->new($url, $user, $pass); 

for my $message ($folder->messages) { 
    if ($message->header('Subject') =~ /Downloadable Message/) { 
     // How to access message's attachments? 
    } 
} 

답변

1

그래서 기본적으로 트릭은 이메일 : 이메일에 간단한 :: MIME을 변환하고 각 첨부 파일을 구문 분석 이메일 : MIME :: 첨부 파일 : 스트리퍼를 사용하는 것입니다. 쉬운 ;-)

! 관련 부분 만 복사 했으므로 재사용을 위해 약간 확장해야 할 수도 있습니다.

use Email::Folder::Exchange; 
use Email::Simple; 
use Email::MIME::Attachment::Stripper; 

# some more code here.... 

my $folder = Email::Folder::Exchange->new($url, $user, $pass); 

for my $message ($folder->messages) { 
    my $tmpMsg = Email::MIME->new($message->as_string); 
    my $stripper = Email::MIME::Attachment::Stripper->new($tmpMsg); 

    for my $a ($stripper->attachments()) { 
     next if $a->{'filename'} !~ /csv/i; #only csv attachments 
     my $tempdir = "C:\\temp\\"; 
     my $tmpPath = $tmpdir . $a->{'filename'}; 


     # Save file to temporary path 
     my $f = new IO::File $tmpPath, "w" or die "Cannot create file " . $tmpPath; 
     print $f $a->{'payload'}; 
    } 
} 
관련 문제