如何检测拒绝发送SMTP响应



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

偶尔我们会不小心超过这个限制,谷歌不会发送电子邮件。但我们的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.0n" );
$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;

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

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

相关内容

最新更新