【问题标题】:Amazon SES email spam marked标记为 Amazon SES 垃圾邮件
【发布时间】:2011-04-25 13:55:51
【问题描述】:

我正在使用 Amazon SES 向我的用户发送批量电子邮件。不过,有些电子邮件被标记为垃圾邮件。我可以做些什么来减轻垃圾邮件标记?

PHP 代码:

$ses = new AmazonSES();
$destination = array();
$destination['ToAddresses'] = $email;
$message = array();
$message['Subject.Data'] = "Domains: $contactsName have made a descision";
$message['Body.Text.Data'] = '';
$message['Body.Html.Data'] = "  Hi $firstName! 
                                </br>
                                </br> 
                                $contactsName have made a descision regarding $title at $link
                                </br>
                                </br>
                                Sincerely,
                                </br>
                                </br>
                                The Domain Team";
$message['Body.Html.Charset'] = 'utf-8';
$response = $ses->send_email('info@domain.com', $destination, $message);

【问题讨论】:

    标签: php email amazon


    【解决方案1】:

    这方面有很多问题会影响您的垃圾邮件声誉,但也有一些快速的问题:

    1. 您要发送给多少用户(大约)?
    2. 您是否总是通过此 IP 地址向这些用户发送电子邮件?
    3. 您的用户是否选择接收电子邮件?他们是否与您有持续的电子邮件关系?他们通常会阅读您发送给他们的电子邮件,还是不看就直接删除?
    4. 您的 HTML 有效吗? (从上面的例子来看,它看起来比没有 - 它应该是 &lt;br/&gt; 而不是 &lt;/br&gt;。)

    这是几个简单的问题。我能给你的最好的快速建议是确保用户选择加入,并鼓励他们将你添加到他们的朋友列表中。尝试从 Amazon SES 发送您和他们之间的每封电子邮件通信。

    【讨论】:

    • 此外,请确保您设置了 SPF 记录,以避免被您的发件人地址过滤。查看openspf.org。更好的办法是为源 IP 设置一个 PTR 记录,该记录可以解析为您在发件人地址中使用的域名,但我想这在您的情况下是不可能的。
    • +1 非常正确。整个博客和职业都致力于这个主题,所以列表几乎是无穷无尽的!
    • 我只想指出,Amazon SES 的用户没有获得专用 IP 地址。但是,一定要让用户选择加入,验证您的 HTML/CSS,并确保您有一个(有效的)退订链接。
    • @JonLim 您能否提供关于“Amazon SES 没有获得专用 IP 地址”的声明的参考?
    【解决方案2】:

    我不熟悉 Amazon SES,但我会尝试一下。

    有一个有趣的讨论,专门处理通过 Amazon SES 发送并在此处标记为垃圾邮件的电子邮件 - AWS Forum: "Email marked as spam CLOUDMARK"

    除了那里提出的观点之外,还有一些建议:

    1. 始终包含文本版本的内容,一些垃圾邮件过滤器可能会将纯 HTML 的电子邮件解释为更可能是垃圾邮件(通常是这样),另外一些用户可能只有基于文本的电子邮件客户端(一些移动用户、等)
    2. 检查您的拼写。拼写错误通常是垃圾邮件的死因,可能会导致人们在没有仔细查看的情况下手动将电子邮件标记为垃圾邮件。
    3. (如果可能。)添加“发件人”名称。同样,如果电子邮件来自一个普通的电子邮件地址,而不是适合您的邮件的人类可读地址,则它更有可能看起来像垃圾邮件(无论是对过滤器还是对用户而言)。

    这是一个建议的修改代码(更正拼写和 HTML 标记):

    <?php
    $ses = new AmazonSES();
    $destination = array();
    $destination['ToAddresses'] = $email;
    $message = array();
    $message['Subject.Data'] = "Domains: $contactsName have made a decision";
    $message['Subject.Charset'] = 'UTF-8';
    
    /* NOTE: Lines are broken for readability only */
    $body = "Hi $firstName!<br>".
            "<br>".
            "$contactsName have made a decision regarding $title at $link<br>".
            "<br>".
            "Sincerely,<br>".
            "<br>".
            "The Domain Team";
    
    $message['Body.Text.Data'] = str_replace( '<br>' , "\n" , $body );
    $message['Body.Html.Data'] = $body;
    $message['Body.Html.Charset'] = 'UTF-8';
    
    $response = $ses->send_email('info@domain.com', $destination, $message);
    

    【讨论】:

    • 您知道如何在 SES 中添加来自名称吗?
    • 我不确定,因为我没有使用过 Amazon SES。我建议运行一个测试,您以大多数其他邮件系统(如 PHPMailer)允许的格式传递目的地,如 $destination['ToAddresses'] = "John Doe &lt;{$email}&gt;";$ses-&gt;send_email('Domain Info &lt;info@domain.com&gt;', ...
    猜你喜欢
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2011-02-08
    • 2014-06-28
    • 1970-01-01
    相关资源
    最近更新 更多