如何使用perl中的MIME :: Lite发送电子邮件,以便邮件不会在垃圾邮件文件夹中结束

时间:2014-08-06 10:43:31

标签: perl email mime spam

我正在使用MIME::Lite发送电子邮件。我不是批量发邮件。我有以下代码来发送邮件。

my $msg = MIME::Lite->new(
    To      => "$recipient_address",
    From    => "$sender_displayname <$sender_email>",
    Subject => "$subject",
    Type    => "multipart/alternative",
);
my $att_text = MIME::Lite->new(
    Type     => 'text',
    Data     => $message_body_plain,
    Encoding => 'quoted-printable',
);
$att_text->attr('content-type' => 'text/plain; charset=UTF-8');
$msg->attach($att_text);

my $att_html = MIME::Lite->new(
    Type     => 'text',
    Data     => $message_body_html,
    Encoding => 'quoted-printable',
);
$att_html->attr('content-type' => 'text/html; charset=UTF-8');
$msg->attach($att_html);

当我发送邮件时,在 Google 等少数域中,电子邮件会进入垃圾邮件文件夹,而在 Yahoo 中,邮件会出现在 INBOX 。我用Google搜索并阅读了Google提供的文档,发现如果电子邮件中包含 seigned-by / 邮寄标题,则电子邮件不会被垃圾邮件过滤器过滤。

以下是我提到的文字:

  

身份验证过程会尝试通过查看验证真实的发件人   在消息的验证数据。这些数据应包含在a中   消息的“签名”或“邮寄”标题(显示在。下方)   查看邮件详细信息时的主题行。当发件人   不包含这些数据,我们无法确定是否有消息   是伪造的。例如,邮件可能声称来自Gmail   地址,但如果邮件没有,我们无法确认该声明   认证数据。

请帮忙!

1 个答案:

答案 0 :(得分:1)

支持Pathak,这与Perl无关。

但无论如何,我会尝试包括:

my $msg = MIME::Lite->new(
    "-Mailed-by" => 'real.mailaccount@sending-mailserver.com', 
    ...

确保此邮件地址(和/或发件人邮件地址)确实存在,最好是在您正在使用的SMTP服务器上

$msg->send('smtp', 'smtp.sending-mailserver.com')
#(or as part of sendmail on 'nix)

这通常会为您提供更少的垃圾点数&#34;如果您尝试发送带有yahoo.com邮件地址的邮件,例如gmail.com smtp服务器,或者使用来自特定公司的电子邮件地址的公共smtp服务器。

还要向Google介绍如何避免陷入垃圾邮件,例如: http://mailchimp.com/resources/guides/how-to-avoid-spam-filters/html/