2014-09-23 70 views
0

我一直在試圖通過電子郵件發送多部分HTML消息,但得到了太多的錯誤和警告。我使用Email::Sender模塊爲sendmail()Email::MIME創建消息。爲什麼在嘗試使用電子郵件::發送模塊通過電子郵件發送多部分HTML郵件時拋出錯誤?

以下是供參考的相關部分代碼。真的很感謝,如果有人能指出我所犯的錯誤和任何消除它的指針。

注意:所有RHS變量都是從屬性文件正確分配的。我還打印了它們以檢查它們是否被分配了正確的值。

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

my $smtpServer   = $mailSMTPHost; 
my $smtpPort   = $mailSMTPPort; 
my $smtpUser   = $mailLogin; 
my $smtpPassword  = $mailPwd; 

my $transport = Email::Sender::Transport::SMTP->new({ 
    host => $smtpServer, 
    port => $smtpPort, 
    sasl_username => $smtpUser, 
    sasl_password => $smtpPassword, 
}); 

# for Email with HTML content 
my $mailBody = $mailGreeting . $mailMsg . $mailSignature; 
my $email = Email::MIME->create_html(
    header => [ 
     From => $mailFrom, 
     To  => $mailTo, 
     Cc  => $mailCC, 
     Bcc  => $mailBCC, 
     Reply => $mailReplyTo, 
     Subject => $mailSubject 
    ], 
    body => $mailBody 
); 

eval { sendmail($email, { transport => $transport }); }; 
if ([email protected]) { 
# [email protected] is an object of Email::Sender::Failure 
    print [email protected]>message; 
    print"\n"[email protected]>code; 
# print "Oh no!". [email protected]>what; 
} else{ print "sendmail success"; }; 

運行時我收到以下錯誤代碼:

Parsing of undecoded UTF-8 will give garbage when decoding entities at /System/Library/Perl/Extras/5.16/darwin-thread-multi-2level/HTML/PullParser.pm line 81. 
failed AUTH: Command unknown: 'AUTH' 
500 
+0

您是否安裝了MIME :: Base64和Authen :: SASL?看起來像電子郵件::發件人::運輸:: SMTP需要他們進行身份驗證。將它們添加到您的模塊列表中以「使用」。 – 2014-09-23 20:42:01

+0

@allen是的我根據您的建議安裝了這兩個模塊並添加到了使用中。但不幸的是結果仍然相同 – user1931485 2014-09-24 01:07:50

回答

0

我想這個問題是TLS。當我更改爲使用模塊並相應地更新了代碼時,電子郵件正在正確發送;即使解析警告仍然被拋出 - 不知道如何解決這個問題。以下是我的更改:

use Email::Sender::Transport::SMTP::TLS; 
my $transport = Email::Sender::Transport::SMTP::TLS->new({ 
    host => $smtpServer, 
    port => $smtpPort, 
    username => $smtpUser, 
    password => $smtpPassword, 
});