如何检测拒绝发送SMTP响应?

时间:2016-06-07 07:44:06

标签: perl email google-apps

我们正在使用Perl程序使用Net::SMTP::SSL模块发送电子邮件。我们也在使用Google SMTP服务器。他们每天通过SMTP发送限制为100封电子邮件(如果您使用的是免费服务)。

有时我们会不小心超出此限制,Google也不会发送电子邮件。但是我们的Perl程序似乎并未接受这一点。有谁知道如何检测发送失败?

我认为这是相关的代码:

use Net::SMTP::SSL;

my $smtp;

$smtp = Net::SMTP::SSL->new( 'smtp.gmail.com', Port => 465, Debug => 0 ) or
        die "Could not connect to Gmail server!";

$smtp->auth( $L, $P ) or die "Authentication Failed!";
$smtp->mail( $from . "\n" )  or die "Cannot send as user $from!";
$smtp->to( $to . "\n" ) or die "Cannot send to $to!";

$smtp->data();
$smtp->datasend( "MIME-Version: 1.0\n" );
$smtp->datasend( "From: " . $from . "\n" );
$smtp->datasend( "To: " . $to . "\n" );
$smtp->datasend( "Subject: " . $subject . "\n" );
$smtp->datasend( "\n");
$smtp->datasend( $body . "\n" );
$smtp->dataend();
$smtp->quit;

1 个答案:

答案 0 :(得分:0)

我不知道如果达到限制,谷歌如何拒绝发送电子邮件,但有几种方法:

  • 拒绝邮件或rcpt命令:在这种情况下,您应该在代码中看到警告
  • 拒绝邮件传递:在这种情况下,dataend()应该告诉您问题,即发送邮件时应该调用的最后一个方法。但看起来您甚至不在代码中使用dataend(),这可能会导致交付纯粹是运气。