我写了一个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创建了一个不安全的令牌。 问题是它是从一个发送的,而不是从另一个发送的。 请帮我解决这个问题