PHP Toplu Email Best Practices?

6 Cevap php

Benim web uygulamaları e-posta büyük miktarda gönderme nasıl işleneceğini düşünüyorum, ve bunu yapmak için en iyi yöntemler olup olmadığını. StackOverflow zaten bir ölçüde olabilir ki, 'öznel' olarak etiketleme, ancak ben bu sistemi uygulamak için en başarılı yolu bilmek gerekir, ya da herhangi bir standart yaklaşım var olup olmadığını.

Benim webapp, 1 10.000 kullanıcı grupları başkanları olan kullanıcılar vardır. Bu kullanıcı benim sistemi ile bu kullanıcılar her bir mesaj göndermek e-posta gerekir. Bu nedenle, benim sistem her grup başkanı için bireysel kullanıcılar için 10.000 e-postalara kadar gönderme sorumludur.

(500 alıcı maksimum olmasına rağmen) Bildiğim kadarıyla söyleyebilirim, bireylere mesaj göndermek için GMail herhangi bir oran sınırı yoktur.

Şu anda, benim geçerli kurulum:

  • Bir mesaj sistemi ile gönderilen olduğunda, bir e-posta kuyruğu girer.
  • Bir cron komut her birkaç dakikada sıradan iletileri kapmak ve bu e-postalar gönderir.
  • Tüm e-posta GMail'in SMTP sunucusu üzerinden gerçekleşiyor.
  • Postalama yapıyor gerçek uygulama PHPMailer olduğunu.

Bu kurulum, kullanıcı tabanı büyüdükçe, büyük olasılıkla yeterli olmayacaktır. Ben sorular şunlardır:

  1. Ben bunun yerine yerel SMTP sunucusu kullanıyor olmalıdır?
  2. Ben bunun yerine yerel makinede bir posta ikili kullanmalı mıyım? Ben bu durumda, muhtemelen tamamen kuyruğunu atlamak olabilir?
  3. Bunu yapmak için kabul edilen bir yolu var mı?

Teşekkürler!

6 Cevap

10.000 bir gün olarak "yüksek" olarak bir e-posta sayısı ile, GMail (veya başka) SMTP güvenmek olmaz. Onlar idare edemiyorlar değil, belli ki onlar çok daha fazla işleyebilir. Ama muhtemelen istemiyorum.

Yerel bir SMTP sunucusuna sahip IMO gitmek için yoludur:

  • (Sadece insanlar güçlü authent düzeni olmadan kullanmasına izin VERMEYİN) kurmak oldukça kolay
  • En modern MTA çok iyi kuyruklarını göndererek ele
  • Siz kota nedenlerle birgün hesabınızı bloke etmeye karar GMail (veya diğerleri) ile uğraşmak zorunda kalmazsınız

Google App Engine

Google App Engine (python) çünkü bu yazacaktı:

  • Biliyorsunuz ölçekler.
  • Bu iyi bir e-posta API vardır.
  • Onu erişmek için iyi bir API ile bir taskqueue vardır.
  • Piton gerçek güzel bir dil olduğu için.
  • Bu (nispeten) ucuz.

PHP

PHP bunu uygulamak istiyorsanız isterim

  • Kendinize Gmail hacminin bu tür gönderilen izin vermez çünkü postaların bu ses gönderdik olanak sağlayan iyi bir SMTP sunucusu bulun. Ben bu size biraz para mal olacak emin için duyuyorum.
  • Dediğin gibi kendinizi örneğin PHPMailer için benzeri ile gönderilen iletiler için iyi bir PHP e-posta kütüphanesi bulun.
  • Örneğin kuyruğundaki e-posta mesajları koymak beanstalkd ve uyumsuz e-posta gönderdi gibi bir ileti kuyruğu kullanın. Bu ile kullanıcı snappier sayfa yük olacak çünkü ilk. Eğer iş ile pc yüklenme engelleyecektir iyi gönderme hızını düzenleyen beanstalkd gibi bir ileti kuyruğu ile ikinci. Sen derleme (yüklemek) beanstalkd için sunucuya ssh erişimi olması gerekir. Sen beanstalkd de beanstalkd bulabilirsiniz
  • Ayrıca ileti kuyruğu işleyecek arka planda bir PHP komut dosyası çalıştırmak için ssh erişimi gerekir. Sen php beanstalkd-client bir beanstalkd-istemci bulabilirsiniz

from php/apache/webpage

Bu kullanıcıya dışarı mesajlar gönderdi hangi gelen sayfasıdır. Bu sayfadan bu hatlarında şey kodlama tarafından beanstalkd için mesaj gönderilecektir:

// register Pheanstalk class loader
require_once('pheanstalk_init.php');
$pheanstalk = new Pheanstalk('127.0.0.1');
$message = ""; // This would contain your message
$pheanstalk->put(json_encode($message);

Sen put komutunu kullanarak mesaj iletileri sıraya koymak zorunda

From long running PHP script in background:

Kod şöyle bir şey olacaktır:

// register Pheanstalk class loader
require_once('pheanstalk_init.php');
$pheanstalk = new Pheanstalk('127.0.0.1');

while(true) {
  $job =  $pheanstalk->reserve();
  $email = json_decode($job->getData());
  // Sent email using PHP mailer.
  $pheanstalk->delete($job);
}

Sanki PHP ve Google App Engine hem de mümkün söylüyorum ama bunu uygulamak daha kolaydır, çünkü ben app motor için giderdim.

Gmail ve Google Apps yaklaşık 500 e-postaları bir gün sizi sınırlar. Ben 500 alıcı maksimum ile birleştiren nasıl emin değilim, ama 10 000 e-posta göndermek isterseniz, muhtemelen başka bir posta sunucusunu bulmak isteyeceksiniz. Ben şahsen yerel bir sunucu veya ISP ya datacenter'ın SMTP kullanın.

Eğer pek çok e-posta gönderiyorsanız, ben kullanıcının gönderilecek e-posta için bekliyor orada oturuyor değil yani kuyruğunu kullanarak öneriyoruz.

Etki alanı bir spam etki alanı olarak kara listeye almaz çok dikkatli olun. Öyle ise, size e-postaların çoğu bloke edilmesini bekleyebilirsiniz, destek, buna çok pahalı olabilir vb satış,.

Yerine AWeber gibi bir hizmeti kullanmak isteyebilirsiniz. Bu e-postaların bu miktarlarda ele kurulum vardır, ama onlar muhtemelen size kendi uygulayabilirsiniz daha ölçümlerini verebilir değil.

Ben her yerde publishe eğer emin değilim, ama deneyim ben, bir anda yüzlerce mesaj göndermeye başlamak eğer Gmail hesabınızda bir onbeş dakika koymak kadar dondurmak olacağını size söyleyebilirim. Bu geçen hafta bana oldu. Ben kendi SMTP sunucusu barındırması gerektiğini düşünüyorum. Genellikle posta () işlevini kullanarak birinin spam klasörüne postanızı koyacağız.

Sadece maksimum erişim hızları için aynı LAN üzerindeki yerel makine, ya da bir makinede Postfix'i yükleyin. Iyi dışarıdan güvenli ve içeriden hızla erişilebilir olduğundan emin olun.

Sonra PHP komut doğrudan Postfix sıraya e-postaları enjekte kodlayın. Bu dramatik posta teslimi işlem hızını artırmak zorundadır.