我有一个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;