Perl脚本无法每次都发送电子邮件

时间:2018-11-15 11:05:01

标签: perl email smtp

我写了一个perl脚本来发送电子邮件,它是从一台服务器发送的,而不是从另一台服务器发送的。 代码。

#!/usr/bin/perl -w
use Net::SMTP::SSL;
use Try::Tiny;


sub send_mail {
    try {
        my $to = 'user@gmail.com' ;
        my $subject = '[important] 1Test Email',;
        my $body = 'Text message bod';

        my $from = 'user@gmail.com';
        my $password = '***********';

        my $smtp;

        if (not $smtp = Net::SMTP::SSL->new('smtp.gmail.com',
                            Port => 465,
                            Debug => 1)) {
           die "Could not connect to server\n";
        }

        $smtp->auth($from, $password)
           || die "Authentication failed!\n";

        $smtp->mail($from . "\n");
        my @recepients = split(/,/, $to);
        foreach my $recp (@recepients) {
            $smtp->to($recp . "\n");
        }
        $smtp->data();
        $smtp->datasend("From: " . $from . "\n");
        $smtp->datasend("To: " . $to . "\n");
        $smtp->datasend("Subject: " . $subject . "\n");
        $smtp->datasend("\n");
        $smtp->datasend($body . "\n");
        $smtp->dataend() || die "data sent failed!\n";
        $smtp->quit;
      } catch {
            warn "caught error: $_";
        };

}

# Send away!
&send_mail('johnny@mywork.com', 'Server just blew up', 'Some more detail');

perl的版本是v5.10.1

两个服务器上的日志是: 如果成功发送,则在末尾记录日志

Net::SMTP::SSL=GLOB(0x14530d8)<<< (decoded) Password:
Net::SMTP::SSL=GLOB(0x14530d8)>>> (decoded) *******
Net::SMTP::SSL=GLOB(0x14530d8)>>> *********
Net::SMTP::SSL=GLOB(0x14530d8)<<< 235 2.7.0 Accepted
Net::SMTP::SSL=GLOB(0x14530d8)>>> MAIL FROM:

如果失败。日志为:

Net::SMTP::SSL=GLOB(0x7e60b8)>>> dXNlcm5hbWUK
Net::SMTP::SSL=GLOB(0x7e60b8)<<< 334 UGFzc3dvcmQ6
Net::SMTP::SSL=GLOB(0x7e60b8)<<< (decoded) Password:
Net::SMTP::SSL=GLOB(0x7e60b8)>>> (decoded) *******
Net::SMTP::SSL=GLOB(0x7e60b8)>>> ********
Net::SMTP::SSL=GLOB(0x7e60b8)<<< 534-5.7.14 

我已经为mygmailId创建了一个不安全的令牌。 问题是它是从一个发送的,而不是从另一个发送的。 请帮我解决这个问题

0 个答案:

没有答案