2012-04-12 11 views
1

Ich versuche, automatisierte E-Mails mit mail() zu senden. Es sendet einige E-Mails, aber nicht alle, etwa 50%. Um zu testen, verwende ich die gleiche E-Mail-Adresse für alle E-Mails, und immer noch nur einige werden geliefert.E-Mail mit PHP mail() senden

Ich benutze localhost XAMPP.

Hier ist der Code:

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(); 
}​ 

Sie bitte Ihre Anregungen geben.

+1

Verwenden Sie stattdessen [phpMailer] (http://sourceforge.net/projects/phpmailer/) und SMTP. – Basti

+1

Was zeigt sich in den Protokollen Ihres Mailservers? – ghoti

+0

Überprüfen Sie auch Ihren Spam-Ordner. –

Antwort

1

Für Senden von Massen-E-Mails Sie einen cron-Job festlegen, die nach 5 oder 10 Minuten laufen können, die nur eine geringe Menge an E-Mails zu einem Zeitpunkt senden. Erstellen Sie eine Referenz in einer Tabelle, damit Sie Aufzeichnungen darüber haben können, welche Adressen per E-Mail gesendet wurden. Die ganze Masse wird in kleine Stücke unterteilt und wie es im Hintergrund laufen wird es nicht eine große Last auf Ihrem SMTP-Server. Sie sollten PHP Mailer oder SwiftMailer Bibliotheken verwenden.

Sie können in dieser Frage einen Blick zu wählen, welche Bibliothek PHP-Mailing am besten ist:

PhpMailer vs. Swiftmailer?

Hoffnung, das hilft.