由Perl(Net :: SMTP)脚本发送的电子邮件由Gmail静默删除

时间:2017-06-14 04:13:35

标签: perl email gmail gsuite

我有一个Perl脚本,可以向具有状态更新的用户发送简单的HTML电子邮件,并提供指向更多信息的链接。我正在使用Net :: SMTP创建邮件并使用smtp-relay.gmail.com发送邮件。它已经运作了很多年。

在上个月,电子邮件停止显示 - 只是没有错误,而不是垃圾邮件。几小时的故障排除后,我已将问题缩小到Gmail,默默地删除包含我特定网址的电子邮件。

http://DOMAIN/cgi-bin/requests/single_request.pl?requestid=111111

我换了一个角色和POOF!再次工作。

http://DOMAIN/cgi-bin/requests/single-request.pl?requestid=111111

我知道这是一个模糊的问题,但是发生了什么?解决方法很好,但我确实没有了解任何有关根本原因的事情。

#!c:\strawberry\perl\bin -w

use strict;
use warnings;

use Net::SMTP;
use Net::Config;

# use this function to send email
#
# example:
#
# send_mail("RECIPIENT\@DOMAIN", "SUBJECT HERE", "BODY HERE");


sub send_mail{
my $recipient = shift;
my $subject = shift;
my $body = shift;

# connect to an SMTP server
my $smtp = Net::SMTP->new("smtp-relay.gmail.com", Debug => 0, Timeout => 30, Hello => 'REDACTED') or die "SMTP Connection Failed: smtp-relay.gmail.com"; 

# sender's address here
$smtp->mail('REDACTED');

# recipient"s address
$smtp->to($recipient);

# Start the mail
$smtp->data(); 

# Send the header.
$smtp->datasend("MIME-Version: 1.0\n");
$smtp->datasend("Content-Type: text/html; charset=\"UTF-8\" \n");
$smtp->datasend("To: $recipient . \n");
$smtp->datasend("From: REDACTED\n");
$smtp->datasend("Reply-to: REDACTED\n");
$smtp->datasend("Subject: $subject \n");
$smtp->datasend("\n");

# Send the body.
$smtp->datasend($body);

# Finish sending the mail
$smtp->dataend(); 

# Close the SMTP connection
$smtp->quit(); 
}
1;

0 个答案:

没有答案