【问题标题】:Sending email with PHP mail()使用 PHP mail() 发送电子邮件
【发布时间】:2012-04-17 16:02:55
【问题描述】:

我正在尝试使用 mail() 发送自动电子邮件。它发送一些电子邮件,但不是全部,大约 50%。 为了测试,我对所有电子邮件使用相同的电子邮件地址,但仍然只有一些被送达。

我正在使用本地 XAMPP。

代码如下:

if ($_POST['sendEmail'] == "SEND Email") {

    ob_start();

    $buffer = str_repeat(" ", 4096);
    $buffer. = "\r\n some HTML \r\n";

    set_time_limit(0);
    $noEmails = $last - $first + 1;
    echo "Emails sent (of $noEmails):";
    for ($index = $first; $index <= $last; $index++) {
        $to = $email["$index"];
        $subject = "Hey {$firstName["
        $index "]}!";
        $message = "$emailMessage";
        $headers = 'From: my_account@gmail.com'."\r\n".'Reply-To: my_account@gmail.com'."\r\n".'X-Mailer: PHP/'.phpversion();
        sleep(1);
        mail($to, $subject, $message, $headers);
        echo $buffer.$index;
        ob_flush();
        flush();
    }
    ob_end_flush();
}​

请提出您的建议。

【问题讨论】:

  • 改用phpMailer 和 SMTP。
  • 邮件服务器的日志中显示了什么?
  • 在 error.log 中显示类似这样的消息:“12/04/12 11:01:08 : Socket Error # 10060Connection timed out.”

标签: php xampp sendmail


【解决方案1】:

对于发送批量电子邮件,您可以设置一个 cron 作业,该作业可能在 5 或 10 分钟后运行,一次仅发送少量电子邮件。在表中创建一个参考,以便您可以记录哪些地址已通过电子邮件发送。整个批量将被分成小块,并且由于它将在后台运行,它不会给您的SMTP 服务器 带来巨大的负载。您应该使用 PHP MailerSwiftMailer

你可以看看这个问题来选择最好的php邮件库:

PhpMailer vs. Swiftmailer?

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 2014-09-22
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多