Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • Yardım
  • Birden fazla kişiye mail gönderirken View'a farklı data gönderme

Merhaba

Basit bir şekilde birden fazla alıcıya mail gönderiyorum:
$to = array(
 'deneme1@domain.com',
 'deneme2@domain.com',
 'deneme3@domain.com',
);
Mail::send('emails.test', $data, function($message) use ($to)
 {
 $message->to($to)->subject('Deneme Mail');
 });
Tabi test view içerisine göderilen $data değişmiyor. Mesela ben her bir gönderilen mail için farklı bir data kullanmak istiyorum (Ör mail içerisinde kişinin adını kullanma. Doğal olarak her mailde değişecek)

Bunu nasıl yapabilirim? foreach kullanmadan? foreach kullansam sorun olur mu?
Foreach ile hiçbir sorun olmaz.
$to = array(
 'deneme1@domain.com',
 'deneme2@domain.com',
 'deneme3@domain.com',
);

foreach($to AS $person)
{
	Mail::send('emails.test', $data, function($message) use ($person)
	{
 $message->to($person)->subject('Deneme Mail');
	});
}
Teşekkürler. Bu şekilde bir deneyeceğim bakalım SMTP bir sorun yaşatacak mı.
Rica ederim, iyi çalışmalar.
Dipnot bırakayım: Maillerde zaman aşımı vs. bir sorun yaşanmaması için bir queue sistemi (misal Iron MQ) hazırlayıp Mail::send(...) yerine Mail::queue(...) diyerek parametreleri çağırmanızı tavsiye ederim.
Kuyruk olayı çok iyi çalışıyor, videosu vardı basit bir iletişim formu ile sadece 1 adet mail gönderiminde bile hız farkı açıkça görülüyordu.

Kuyruk olayını beanstalkd ile bir defa denedim, konsoldan başlatınca ve konsolu kapatınca sunucu reboot olana kadar devam edecek mi kuyruk takibi? Normal paylaşımlı bir host için hazırlanan bir betikte kuyruk nasıl başlatılacak mı, cron ile mi?
Arda yazdıDipnot bırakayım: Maillerde zaman aşımı vs. bir sorun yaşanmaması için bir queue sistemi (misal Iron MQ) hazırlayıp Mail::send(...) yerine Mail::queue(...) diyerek parametreleri çağırmanızı tavsiye ederim.
angelside yazdıKuyruk olayı çok iyi çalışıyor, videosu vardı basit bir iletişim formu ile sadece 1 adet mail gönderiminde bile hız farkı açıkça görülüyordu.

Kuyruk olayını beanstalkd ile bir defa denedim, konsoldan başlatınca ve konsolu kapatınca sunucu reboot olana kadar devam edecek mi kuyruk takibi? Normal paylaşımlı bir host için hazırlanan bir betikte kuyruk nasıl başlatılacak mı, cron ile mi?
Arda yazdıDipnot bırakayım: Maillerde zaman aşımı vs. bir sorun yaşanmaması için bir queue sistemi (misal Iron MQ) hazırlayıp Mail::send(...) yerine Mail::queue(...) diyerek parametreleri çağırmanızı tavsiye ederim.
Kuyruğu şey gibi düşünün, Kullanıcıyı bekletmek yerine amele bir bot ( :-D ) sizin için sayfaya geliyor ve işleminiz için loading(...) bekliyor. Sunucu kapalı iken / restart olurken çalışmayacaktır doğal olarak, fakat erişilemediğini anlayınca bir süre sonra yeniden deneyecektir queue sisteminize bağlı olarak diye düşünüyorum. Paylaşımlı hostta da sorun vermeyecektir, yalnız yapacağınız işlem ile script timeout sürenizi de ayarlamalısınız, ya da her bir döngü değeri (bu örnekte atılan her bir mail için) için ayrı queue tanımlamalısınız (Mail::queue() bunu yapıyor tam olarak), fakat bu da eğer döngü içindeyse pek çok queue tetiği demek oluyor. Bu nedenle queue prosesini bir döngü ile tek bir queue'ye bağlamayı şahsen ben tercih ediyorum.
Arda yazdıDipnot bırakayım: Maillerde zaman aşımı vs. bir sorun yaşanmaması için bir queue sistemi (misal Iron MQ) hazırlayıp Mail::send(...) yerine Mail::queue(...) diyerek parametreleri çağırmanızı tavsiye ederim.
Teşekkürler. IronMQ + Mandrill kullanıyorum. Örneğin Admin 5 kullanıcı için ortak bir görev ekliyor ve kullanıcıları mail ile uyarı gidiyor. Bunu veri tabanına kaydederken tabi ki mail göndermeye çalışırsam fonksiyon işini bitirinceye kadar bekletecek. O yüzden IronMQ ile queue kullanarak hazırladım. Kayıt işlemi bittikten birkaç saniye sonra IronMQ tetiklemeye başlıyor ve arka planda mailler gidiyor. Türkiye'de bulunan paylaşımlı bir hosting kullandığım için beanstalkd bulmak biraz hayal, o yüzden IronMQ kullandım. Bırak beanstalkdı daha validation kullanırken mime validation bile kullanamıyorum. Adamlar PHP 5.3 ile birlikte gelen FileInfo'yu iptal etmiş, yerine eski PECL eklentisi olanı kurmuş o yüzden hata veriyor, eksik constant var sanırım, ben de eski usül yaptırıyorum, sürünüyoruz resmen
7 gün sonra
mgsmus yazdı
Arda yazdıDipnot bırakayım: Maillerde zaman aşımı vs. bir sorun yaşanmaması için bir queue sistemi (misal Iron MQ) hazırlayıp Mail::send(...) yerine Mail::queue(...) diyerek parametreleri çağırmanızı tavsiye ederim.
Teşekkürler. IronMQ + Mandrill kullanıyorum. Örneğin Admin 5 kullanıcı için ortak bir görev ekliyor ve kullanıcıları mail ile uyarı gidiyor. Bunu veri tabanına kaydederken tabi ki mail göndermeye çalışırsam fonksiyon işini bitirinceye kadar bekletecek. O yüzden IronMQ ile queue kullanarak hazırladım. Kayıt işlemi bittikten birkaç saniye sonra IronMQ tetiklemeye başlıyor ve arka planda mailler gidiyor. Türkiye'de bulunan paylaşımlı bir hosting kullandığım için beanstalkd bulmak biraz hayal, o yüzden IronMQ kullandım. Bırak beanstalkdı daha validation kullanırken mime validation bile kullanamıyorum. Adamlar PHP 5.3 ile birlikte gelen FileInfo'yu iptal etmiş, yerine eski PECL eklentisi olanı kurmuş o yüzden hata veriyor, eksik constant var sanırım, ben de eski usül yaptırıyorum, sürünüyoruz resmen :)
Çalıştığım iş yerinde kaç hosting firması ile kavga ettim bu sebepten anlatamam, çok iyi bilirim