2012-04-12 212 views
1

我试图用邮件发送自动邮件()。它发送一些电子邮件,但不是全部,大约50%。 为了测试我对所有电子邮件都使用相同的电子邮件地址,并且仍然只有一部分得到了发送。用PHP邮件发送电子邮件()

我正在使用localhost 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: [email protected]'."\r\n".'Reply-To: [email protected]'."\r\n".'X-Mailer: PHP/'.phpversion(); 
     sleep(1); 
     mail($to, $subject, $message, $headers); 
     echo $buffer.$index; 
     ob_flush(); 
     flush(); 
    } 
    ob_end_flush(); 
}​ 

请给你的建议。

+1

使用[phpMailer](http://sourceforge.net/projects/phpmailer/)和SMTP代替。 – Basti 2012-04-12 05:30:31

+1

邮件服务器日志中显示了什么? – ghoti 2012-04-12 05:30:42

+0

检查您的垃圾邮件文件夹。 – 2012-04-12 05:34:04

回答

1

对于发送大量电子邮件可以设置一个cron作业可以5分钟或10分钟,将在同一时间发送电子邮件只将少量之后运行。在表中创建一个引用,以便您可以记录哪些地址已通过电子邮件发送。整个批量将分为小块,因为它将在后台运行,它不会对您的SMTP服务器带来巨大的负载。您应该使用PHP MailerSwiftMailer

您可以在这个问题看看选择哪个PHP邮件库是最好的:

PhpMailer vs. Swiftmailer?

希望这有助于。