0

以下は、perlで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   = 'xxx@test.com';
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 => 'test@lintotest.com',
                To => 'linodavis@gmailcom',
                Subject => 'Test Mail',
        ],
        body => $html,
        text_body => $plain_text
);

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

正常に動作しています。メール送信の応答を見つける必要があります。

そのために、コードを次のように変更しました

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

}else{
 print "success";
}

これを達成するためのより良い方法はありますか?

4

1 に答える 1

0

コードを改善する 2 つのこと。

$@まず、できるだけ早くのコピーを取得することをお勧めします (エラーの処理中に何らかの操作を行って の値が変更された場合に備えて$@)。

if (my $e = $@) {
    print $e->message;
    print"\n" . $e->code;
}

第二に、 Try::Tinyのようなモジュールを検討することも価値があります。これにより、例外処理コードが少し見栄えが良くなります。

try {
    sendmail($email, { transport => $transport });
} catch {
    # Exception is in $_
    print $_->message;
    print"\n" . $_->code;
}   
于 2013-03-15T09:51:58.593 に答える