it-swarm.com.de

Massenversand von E-Mails

Ich sollte Tausende von E-Mails als Reaktion auf ein bestimmtes Ereignis senden, damit der E-Mail-Versand nicht manuell, sondern automatisch erfolgt.

Der Server, auf dem meine Website gehostet wird, hat ein Stundenlimit für den E-Mail-Versand (ca. 500 pro Stunde), sodass ich ihn partitionieren muss.

Gibt es ein Plugin mit dieser Funktion? Oder eine PHP Bibliothek, die mir dabei hilft?

Vielen Dank

2
pAkY88

Ich halte die Verwendung von sleep() nicht für eine gute Idee, da sie im Ruhezustand Ressourcen beansprucht und Probleme mit dem Skript-Timeout auftreten können.

Ich halte es auch nicht für eine gute Idee, wichtige oder Massen-E-Mails von einem Webserver aus zu senden, da dies nicht die eigentliche Aufgabe ist. Nachrichten, die von mail() / wp_mail()-Standardfunktionen gesendet werden, werden eher als Spam gekennzeichnet als Nachrichten, die von echten MTAs gesendet werden. Sie erhalten keine Benachrichtigung, wenn Nachrichten abprallen. Der Host kann die Nachrichten löschen, weil Sie ein beliebiges Limit überschreiten oder weil er den Eindruck hat, dass Sie Spam-Mails versenden, und es besteht eine gute Chance, dass er Sie nicht einmal darüber informiert, dass er dies tut. usw...

Ich denke, der beste Weg, dies zu tun, wäre die Verwendung eines Dienstes, der entwickelt wurde, um Massen-E-Mails wie MailChimp zu versenden. Es wird viel zuverlässiger und effizienter sein. Sie können Plugins wie Benutzer in MailChimp importieren verwenden, um Ihre WP Benutzerkonten mit den Kampagnenmitgliedern zu synchronisieren. Es gibt auch Plugins wie MailChimp STS , um WP-generierte Nachrichten über MailChimp weiterzuleiten. Möglicherweise müssen Sie das Plugin-Repository durchsuchen, um genau das zu finden, was Sie benötigen. Es sind jedoch viele MailChimp-bezogene Plugins verfügbar.

Wenn Sie darauf bestehen, die Nachrichten von Ihrem Webserver zu senden, sollten Sie mindestens eine Bibliothek wie SwiftMailer anstelle von wp_mail() verwenden. Es unternimmt große Anstrengungen, um die Wahrscheinlichkeit zu verringern, dass die Nachricht fälschlicherweise als Spam gekennzeichnet wird, und verfügt über ein fortschrittliches Batch-Sendesystem.

2
Ian Dunn

Sie benötigen etwa den folgenden (möglicherweise funktionierenden) Beispielcode mit get_users(); :

$users = get_users( /* Add your args here */ );
foreach ( $users as $user )
{
    $user_email_addresses[] = $user->email; // receive array of user mail addresses here
}

function wpse28212_send_delayed_bulkmail( $email_addresses )
{
    $i = 0;
    foreach ( $user_email_addresses as $email_addy )
    {
        ++$i; // count users up

        $delay = 0; // in miliseconds (ms)

        if ( $i >= 500 )
        {
            $delay = 3600000; // 1 hour
        }
        sleep( $delay );

        wp_mail( $email_addy, 'subject', 'message' );
    }
}

Links:

1
kaiser