Php mail fonksiyonu kullanırken bir sınır var mı?

5 Cevap php

Ben php ve mysql kullanıyorum

Ben benim abone güncellemek için 10k + + (artı on binlerce) e-postalar göndermek için gidiyorum, ve bu onları göndermek için gidiyorum ilk kez. Ben php posta işlevini kullanmak olacaktır, temelde burada ben yapacağım:

İlk veritabanından veri almak:

Select name, email FROM data

Bundan sonra, veri göndermek için ise döngü kullanarak:

while($r = mysql_fetch_assoc($exe)){
    ...
    if($mail){
        echo "success<br>";
    } else {
        echo "failed<br>";
    }
}
echo "Sent all";

Ben her e-posta başarılı şekilde gönderildiğinden emin olmak için, .. eğer başka bir deyim içerir. Ben dikkat çekmek için gereken bir şey var mı? 10K + + kullanıcıları gönderirken herhangi bir sorun var mı?

Gönderdiğiniz için gidiyoruz e-postaların numaraları bir sınırı var mı? Ben php için yeni, lütfen bildiriniz. Teşekkürler

5 Cevap

Bu notun farkında olun mail documentation:

Note: It is worth noting that the mail() function is not suitable for larger volumes of email in a loop. This function opens and closes an SMTP socket for each email, which is not very efficient.
For the sending of large amounts of email, see the » PEAR::Mail, and » PEAR::Mail_Queue packages.

Hiçbir e-posta sayısına sınırlama, ama orada PHP script zaman sınırı yoktur. max_execution_time sizin php.ini içinde görmek, tipik olarak 20 veya 30 saniye var. Bunu bilmiyorsanız, onu bulmak için () phpinfo.

Ayrıca, çok fazla e-posta alıyorum engellemek için bazı adımlar atmalıdır. Gönderilmiş gibi onları işaretlemek gerekir, böylece yanlışlıkla iki kez senaryoyu başlatmak eğer çift mesajları almazsınız.

Bunun dışında, PHP mail fonksiyonu gereği tüm optimize edilmemiştir dikkat etmelisiniz. Eğer birçok diğer özellikleri arasında, örneğin, bazı önbelleğe alma yapmak sağlayacaktır phpmimemessage veya başka herhangi bir gibi bazı kütüphaneler, deneyebilirsiniz.

Sen başarısız / gönderilen e-postaların bir kuyruk oluşturmak gerekir, bu yüzden başarısız girişimleri yeniden göndermeyi deneyin ve bir terslik olursa tekrar e-postaları gönderme önleyebilirsiniz.

Do not posta yoluyla 10k e-postalar göndermek için çalışan bir döngü oluşturmak ()

Ayrıca, vurmak olacak büyük olasılıkla sınır ISS veya ana posta sunucusu gibi olacaktır.

Sen de bir "gerçek" e-posta listesi gibi mailman gibi aracı, ya da en azından (eğer mümkünse) alias gruplarını kullanarak kurma bakmak isteyebilirsiniz.

http://serverfault.com/questions/67154/sending-an-email-to-about-10k-users-not-spam, PHPlist diğerleri ile birlikte, söz edilir: Ayrıca, serverfault üzerindeki ilgili soruları bakın. Ve burada - http://serverfault.com/questions/68357/whats-the-best-way-to-send-bulk-email.

Sen armut :: MAIL_QUEUE http://pear.php.net/package/Mail_Queue/ kullanabilirsiniz

Bu gerçekten iyi bir iş yapmak olacaktır.