2011-01-31 5 views
0

나는이 질문이 그렇게 존재하지 않는다고 생각하지만, Perl에 대한 인스턴스 나 비슷한 것을 찾지 못했습니다. ...Perl을 사용하여 여러 파일을 전자 메일에 첨부하려면 어떻게합니까?

어쨌든, 몇개의 펄 모듈을 사용해야합니까? 파일을 이메일로 보내시겠습니까?

현재, 나는 하나의 첨부 파일이 포함 된 이메일을 보내이 코드를 사용하고 있지만, 여러 개의 첨부 파일 처리를 수정하는 방법을 알아낼 수 :

my $mail_fh = \*MAIL; 
open $mail_fh, "|uuencode $attachment $attachment |mailx -m -s \"$subject\" -r $sender $recipient"; 
print $mail_fh $message; 
close($mail_fh); 

이 코드 블록은 변경 될 수 있습니다 여러 첨부 파일을 처리 할 수 ​​있습니까? 아니면 이것을 끄기 위해 특별한 모듈을 사용해야합니까? 그렇다면 모듈은 무엇이며 어떻게 스크립트를 작성합니까?

도움 주셔서 감사합니다.

+1

- 하나를 선택하고 그것을 사용할 수 있습니다. 그리고 uuencode를 사용하지 마십시오. 많은 좋은 이유 때문에 Base-64 인코딩으로 대체되었습니다. –

답변

3

나는 MIME::Lite를 사용하는 예제와 함께가는 결국

use MIME::Lite; 
use Getopt::Std; 

my $SMTP_SERVER = 'smtp.server.com';    #change 
my $DEFAULT_SENDER = '[email protected]';  #change 
my $DEFAULT_RECIPIENT = '[email protected]'; #change 

MIME::Lite->send('smtp', $SMTP_SERVER, Timeout=>60); 

my (%o, $msg); 

# process options 

getopts('hf:t:s:', \%o); 

$o{f} ||= $DEFAULT_SENDER; 
$o{t} ||= $DEFAULT_RECIPIENT; 
$o{s} ||= 'Files'; 

if ($o{h} or [email protected]) { 
    die "usage:\n\t$0 [-h] [-f from] [-t to] [-s subject] files ...\n"; 
} 

# construct and send email 

$msg = new MIME::Lite(
    From => $o{f}, 
    To => $o{t}, 
    Subject => $o{s}, 
    Data => "Data", 
    Type => "multipart/mixed", 
); 

while (@ARGV) { 
    $msg->attach('Type' => 'application/octet-stream', 
       'Encoding' => 'base64', 
       'Path' => shift @ARGV); 
} 

$msg->send(); 

here을 발견 사용 예 : CPAN에 수많은 메일 모듈이 있습니다

./notify_mime.pl -f cheese -t queso -s subject /home/id/cheeseconqueso/some_dir/example1.xls /home/id/cheeseconqueso/some_other_dir/*.xls 
1

여러 등급이 있긴하지만 Mail::Sender (및 그 번호는 Mail::Sender::Easy)이며 사용하기 쉽고 여러 첨부 파일을 처리 할 수있는 것 같습니다.

Mail::Internet에서 인터페이스가 매우 귀찮습니다.

위의 내용보다 개선해야 할 사항이 있습니다. :-)

2

더 많은 제어가 필요한 경우 또는 Email::MIMEattach_file을 참조하십시오.

관련 문제