1

我需要发送超过 2000 封邮件,我正在使用 Swift Mailer 库。

我们有自己的服务器,它有 SMTP 和 sendmail 传输。我正在使用 SMTP:

$transport = Swift_SmtpTransport::newInstance('localhost', 25);

所有的邮件都可以发给少数人,但我担心我们在发送大量邮件时会被禁止。我真的不知道“禁止”是什么意思以及它的样子,但我害怕后果。

那么,这样的“禁令”是否存在,以及如何以正确的方式使用 Swift Mailer 实现群发邮件是真的吗?

PS:我的代码看起来像:

    // Create the Transport
    $transport = Swift_SmtpTransport::newInstance('localhost', 25);

    // Create the Mailer using your created Transport
    $mailer = Swift_Mailer::newInstance($transport);

    // Create a message
    $message = Swift_Message::newInstance($message_theme)
      ->setFrom(array($sender => $name))
      ->setTo($emails)
      ->setBody($message_text,"text/html")
      ;
    try {
        // Send the message
        $result = $mailer->send($message);
    }
    catch(Exception $e) {
        echo "Error: ".$e->getMessage();
    }
4

2 回答 2

3

因为我希望您不会将其用于垃圾邮件!!!

这里有一些事情要做:

  • 尝试相同的不同电子邮件(更改正文中的收件人姓名)
  • 每 3-4 秒发送一次电子邮件,而不是 100 封电子邮件/秒 - 它应该在大约 2-3 小时内发送 2000 封电子邮件。
于 2012-08-20T11:45:37.190 回答
2

黑名单/灰名单确实存在,您可以实施一些最佳实践来避免这些问题。对于 2,000 封电子邮件,只要您的标题是合法的,您的正文中没有任何可疑之处,并且您的收件人位于不同的域中,您就不应该遇到这个问题。但是,正如 khomyakoshka 所提到的,上面的代码是不正确的,您应该使用循环来发送每封电子邮件。这样可以避免将整个邮件列表暴露给每个用户。

一些额外的最佳实践:

1) Swiftmailer 提供插件 (http://swiftmailer.org/docs/plugins.html) 可以帮助您发送大量电子邮件。特别值得注意的是 Throttler 和 AntiFlood 插件。

2) 如果您打算修改邮件内容以适应收件人,请考虑使用装饰器插件(也在插件页面上提到)来完成此任务。

希望这些提示有所帮助。

于 2012-08-27T22:06:26.497 回答