Perl:经常收不到Sendmail邮件

时间:2015-01-23 15:51:43

标签: perl email sendmail

我使用以下功能向在我网站上注册的用户发送电子邮件。这些用户中的大多数都接收邮件,但是其中很大一部分没有收到邮件,也无法在他们的垃圾邮件文件夹中找到它们。有人能告诉我,我怎样才能改变配置,以便每个人都可以收到邮件?

sub pemo_send_email {
    my $recipient = shift, my $subject = shift, my $sender = shift, my $cc = shift,
    my $content = shift;

    open MAIL, "| /usr/lib/sendmail -t -i";
    print MAIL "From: $sender\n";
    print MAIL "To: $recipient\n";
    print MAIL "C" . "c: $cc\n";
    print MAIL "Subject: $subject\n";
    print MAIL "Reply-To: $sender\n";
    print MAIL "\n";
    print MAIL "$content";
    close MAIL;
}

2 个答案:

答案 0 :(得分:1)

您的代码中可能存在错误,您应该考虑使用Email::Sender这样的模块,而不是自己滚动。您的邮件也可能被丢弃为垃圾邮件。是的,即使它不在您的用户中也是如此。垃圾邮件文件夹。

在这个猖獗的垃圾邮件和网络钓鱼的日子里,发送自己的邮件并不是一个好主意。它太可能绊倒反垃圾邮件保护。这些保护将在用户的ISP或邮件提供商处进行,邮件永远不会到达用户的邮件客户端。

住宅互联网帐户,动态IP,VPN等......通常被列入黑名单。有很多很多黑名单。 You can check what lists your IP is on

可能是其他反垃圾邮件启发式失败。其中许多与标题中的内容有关,而不是正文中的内容。 Getting this right is hard。一个简单的邮件是From与服务器不同的域。

我的建议是尝试通过GMailpobox.com等提供商发送电子邮件。如果您要发送大量邮件,则可能需要为外发邮件服务付费。

答案 1 :(得分:0)

如果它有时会起作用,而不是所有时间 - 可能性并不是代码的根本错误。很难说肯定,但你在那里看起来确定。

因此,我开始考虑两个可能的问题来源:

  • 错误的输入/处理。我的个人'问题'是"someuser@somewhere.com"可以插入为数组名称。但换行是潜在错误的另一个来源。

  • 您的邮件基础设施正在遭受痛苦,也许邮件假脱机正在填补这样的东西。检查MTA日志,看看是否有明显的问题。 (例如,您似乎没有检查sendmail的open是否成功)

哦,通常我建议3 arg open是'good form',例如:

open ( my $mailer, "|-", "/usr/lib/sendmail -t -i" ) or die $!;
print {$mailer} "From: $sender\n";

等。

相关问题