2012-04-12 6 views
1

Я пытаюсь отправить автоматические письма с помощью почты(). Он отправляет несколько писем, но не всех, около 50%. Чтобы проверить, что я использую тот же адрес электронной почты для всех электронных писем, и все же только некоторые из них доставлены.Отправка электронной почты с помощью PHP mail()

Я использую 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

+1

Что отображается в журналах вашего почтового сервера? – ghoti

+0

Проверьте папку со спамом. –

ответ

1

Для отправки объемных писем вы можете набор хрон работы, который может работать через 5 или 10 минут, которые будут посылать только небольшое количество писем в то время. Создайте ссылку в таблице, чтобы вы могли иметь запись о том, какие адреса были отправлены по электронной почте. Весь объем будет разделен на маленьких кусков, и поскольку он будет работать в фоновом режиме, он не будет загружать огромную нагрузку на ваш SMTP-сервер. Вы должны использовать PHP Mailer или SwiftMailer библиотеки.

Вы можете посмотреть на этот вопрос, чтобы выбрать PHP рассылка библиотеки лучше всего:

PhpMailer vs. Swiftmailer?

Надеется, что это помогает.

Смежные вопросы