2013-03-15 2 views
0
다음

는 펄에서 HTML 이메일을 보내는 내 코드 전송하는 동안 응답 (성공 또는 실패)를 얻는 방법펄에서 HTML 메일을

use strict; 
use warnings; 

use Email::Sender::Simple qw(sendmail); 
use Email::Sender::Transport::SMTP(); 
use Email::Simple(); 
use Email::Simple::Creator(); 
use Email::MIME::CreateHTML; 


my $smtpserver = 'xxx.xxx.xx'; 
my $smtpport = 25; 
my $smtpuser = '[email protected]'; 
my $smtppassword = 'xxxx'; 

my $transport = Email::Sender::Transport::SMTP->new({ 
    host => $smtpserver, 
    port => $smtpport, 
    sasl_username => $smtpuser, 
    sasl_password => $smtppassword, 
}); 


my $html ="<div>Success</div>"; 
my $plain_text ="plain text"; 

my $email = Email::MIME->create_html(
     header => [ 
       From => '[email protected]', 
       To => '[email protected]', 
       Subject => 'Test Mail', 
     ], 
     body => $html, 
     text_body => $plain_text 
); 

sendmail($email, { transport => $transport }); 

그 난의 응답을 찾을 필요가 fine.Now 작업 메일 전송. 그것에 대해

내가 이것을 달성하기 위해 더 나은 방법이,

이제
eval { 
sendmail($email, { transport => $transport }); # this is try catch method 
}; 
if ([email protected]) { 
     # where [email protected] is a object of Email::Sender::Failure 
    print [email protected]>message; 
    print"\n"[email protected]>code ; 

}else{ 
print "success"; 
} 

알려으로 코드를 수정?

답변

0

코드 개선에 도움이되는 두 가지 사항.

첫째, 가능한 한 빨리 [email protected] 사본을 가져 오는 것이 좋습니다 (오류 처리 중에 수행 한 작업이 값이 [email protected] 인 경우).

if (my $e = [email protected]) { 
    print $e->message; 
    print"\n" . $e->code; 
} 

둘째, 당신의 예외 처리 코드가 조금 더 좋은 보이게 Try::Tiny 같은 모듈을 고려도 가치가있다.

try { 
    sendmail($email, { transport => $transport }); 
} catch { 
    # Exception is in $_ 
    print $_->message; 
    print"\n" . $_->code; 
}