0

我有一个 Perl 脚本,它可以向用户发送简单的 HTML 电子邮件,其中包含状态更新和指向更多信息的链接。我正在使用 Net::SMTP 创建邮件并使用 smtp-relay.gmail.com 发送邮件。多年来,它一直运行良好。

在上个月,电子邮件停止出现 - 只是没有出现错误,也没有出现在垃圾邮件中。经过数小时的故障排除后,我已将问题缩小到 Gmail 静默丢弃包含我的特定 URL 的电子邮件。

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

我换了一个角色,噗!再次工作。

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;
4

0 回答 0