PHP kullanarak toplu e-posta gönderme

8 Cevap php

Ben şu anda bir müzik blogu yazıyorum. Yönetici, her 2-3 günde bir yeni bir makale nakleder. Yönetici mesajların kez bir makale, bir toplu e-posta hemen çevresinde 5000 abonelere gönderilecek.

Toplu mail özelliğini uygulamak için en iyi yolu nedir?

Aşağıdaki fonksiyonu çalışmaz mı?

function massmail() 
{
  $content = '...';
  foreach ($recipients as $r) {
    $_content = $content . '<img src="http://xxx/trackOpenRate.php?id='.$r.'">';
    mail($r, 'subject', $_content);
  }
}

Başka bir soru: Tüm 5000 aboneleri Yahoo Mail kullanıyorsanız, Yahoo bir DDOS saldırısı gibi davranın ve benim SMTP sunucusunun IP adresini bloke olacak?

8 Cevap

Öncelikle, PHP ile birlikte gelen mail () fonksiyonunu kullanarak optimal bir çözüm değildir. Kolayca istenmeyen olarak işaretlenmiş ve doğru HTML e-postalar göndermek sağlamak için başlığını ayarlamak için ihtiyaç vardır. Kod parçacığını işe yarayıp gelince, o, ama specifying extra headers olmadan doğru içine HTML kodu alırsınız şüphe ediyorum

Ben farklı mim türleri ve SMTP kimlik doğrulaması için HTML desteği, destek (spam olarak posta işaretlemek için daha az muhtemel olan) var SwiftMailer bir göz, atın önerelim.

Ben size kodu yapmış gibi onları bir anda işlemek sonra, (bir çeşit kuyrukta gibi) bir veritabanına tüm e-postaları eklemek olurdu (SwiftMailer veya phpmailer vb kullanmak istiyorsanız, bunu da yapabilirsiniz.)

Her posta gönderildikten sonra, gönderildiği tarih / saati kaydetmek için veritabanını güncellemek.

Eğer varsa ilk veritabanında koyarak

  1. Eğer bunu kimin gönderdiğini bir rekor
  2. script zaman aşımına ya da başarısız olur ve yeniden çalıştırmak zorunda, o zaman iki kişiye aynı e-posta göndererek sona ermeyecek
  3. Bir cron işten gönderme işlemini çalıştırın ve bir anda bir toplu iş yapacağız, posta sunucusu değil bunalmış böylece, ve gönderildi ne takip edebilirsiniz

Bunlar otomatik olarak listeden kaldırılır böylece dönmüş e-posta ya da geçersiz e-postaları nasıl otomatik, aklınızda tutun.

Eğer pek çok e-posta göndermek eğer birkaç sekerek almak bağlanmıştır.

This is advice, not an answer: You are much, much better off using dedicated mailing list software. mailman is an oft-used example, but something as simple as mlmmj may suffice. Sending mass mails is actually a more difficult task than it actually appears to be. Not only do you have to send the mails, you also have to keep track of "dead" addresses to avoid your mail, or worse, your mailserver, being marked as spam. You have to handle people unsubscribing for much the same reason.

Bu şeyleri kendiniz uygulamak, ama özellikle işleme zor ve ödüllendirmemek iştir sıçrama olabilir. Bir posta listesi yöneticisi kullanarak işler çok daha kolay hale getirecek.

Yahoo için posta lezzetli yapmak için nasıl gelince, bu tamamen başka bir konudur. Bütün hatalarına rağmen, onlar SPF ve DomainKey büyük stok koymak gibi görünüyor. Muhtemelen posta sunucu yöneticisi işbirliğini gerektirir ki, onları uygulamak zorunda olacak.

Sen operasyon için bu tür CRON kullanmayı düşünebilirsiniz. Kerede toplu mail gönderme kesinlikle iyi değil, bu spam olarak algılanabilir, ddos, sunucu çökmesine vb

Yani CRON seferde 100 postalar göndermek, sonra vb, önümüzdeki 100 birkaç dakika bekleyin, harika bir çözüm olabilir

Neden yerine kullanmayın phplist? Ayrıca PHP Mailer üstüne inşa edilmiştir ve endüstri liderlerinin bir sürü bunu kullanıyor. Benim müşterilerine toplu postalar göndermek için kendimi birkaç kez kullandım. PHPlist hakkında güzel bir şey, bir etki alanı düzeyinde artı bir zaman sınırı düzeyde mesajlarınızı boğacak olabilir. http://www.phplist.com/details: özelliklerin tam listesi için bir göz var

Ne biz de var, iç yakalama sistemleri bir çift ile yaptık listemize bizim kullanıcı tabanını itin ve daha sonra her gün belirli bir mail tetikleyen bir cron girdisi sahip oldu. Olasılıklar sonsuzdur, bu açık kaynak hakkında müthiş bir şey!

Ayrıca Armut paketler:

http://pear.php.net/package/Mail_Mime http://pear.php.net/package/Mail http://pear.php.net/package/Mail_Queue

hıçkırarak ağlamaya.

PS: Bu 5000 e-postalar göndermek için mail () kullanın ETMEYİN. Mail () hatta aynı MTA, e-posta set başına ayrı bir yuva oluşturur beri herkes söylediklerime ek olarak, bu son derece verimsiz olduğunu.

Do not, standart PHP araçlarını kullanarak 5.000 kişiye e-posta gönderebilirsiniz. Saniyeler içinde en ISS'ler tarafından yasaklandı ve hatta bunu bilmek asla alırsınız. Bazı e-posta listeleri yazılım veya Email Service Provider bu ne kullanmanız gerekir ya.

Ayrıca PHPMailer sınıfında bakabilirsiniz. PHPMailer