Zend Framework ile birden abonelere e-posta gönderme

3 Cevap php

Ben kodu yalnızca tablodaki son aboneye bir e-posta gönderdi, çünkü ben burada yanlış bir şey yapıyor olması gerekir düşünüyorum. Ben abonelerin dizi, bu göndermek için çalışıyor birden fazla olduğu onun açık oturum açın. Ne bana bunu yapmak için en iyi yoldur ... problem birlikte toplu onları çalışırken ile ilgisi var? Ben bir ek ile, bir mesaj oluşturmak için çalışıyorum, o ayrı adrese her biri gönderebilir ve bir dozajlanmamış süreç olarak hepsini gönderin. İşte benim kod:

	$subscribersManager = new DD_Subscribers_Manager();
	$subscribers = $subscribersManager->getAllSubscribers();


	$subject = $form->getElement('subject')->getValue();
	$body = $form->getElement('body')->getValue();
	$filename = $form->getElement('bulletin')->getValue();
	$filepath = Zend_Registry::get('rootDir') . '/public/downloads/archive/' . $filename;

	$config = array('ssl' => 'tls', 'port' => 587, 'auth' => 'login', 'username' => 'fake@email.com', 'password' => 'password');
	$smtpConnection = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);

	foreach ($subscribers as $subscriber) {
		$message = new Zend_Mail('utf-8');
		$message->setFrom('fake@email.com', 'My Fake Mailing List')
				->addTo($subscriber->email)
				->setSubject($subject)
				->setBodyText($body);
		$attachment = $message->createAttachment(file_get_contents($filepath));
		$attachment->type = 'application/pdf';
		$attachment->filename = $filename;
	}
	$message->send($smtpConnection);

3 Cevap

Bu kapsam sorunu gibi görünüyor: Sen foreach döngü içinde $ mesaj oluşturmak ve $ message-> () foreach sonra denir göndermek beri sadece (son bir göndereceğiz.

Temelde, her vakit foreach döngü dolaşır $ mesajın değeri üzerine. $ Message-> yineleme başına bir e-posta göndermek için foreach döngü içine göndermek hareket. Orada mesajların bir dizi oluşturmak ve hepsini bir kerede göndermek için başka bir yol olabilir, ama ben ZendMail aşina değilim olabilir.

EDIT: Aslında, size tek bir mesaj için additiional alıcıları (en fazla 1) eklemek için) ($ message-> addto arayabilirsiniz Zend_Mail ilgili belgeleri okursanız. Sizin kod gibi bir şey değiştirmek olabilir:

$message = new Zend_Mail();
$message->setFrom('fake@email.com', 'My Fake Mailing List')
                                ->setSubject($subject)
                                ->setBodyText($body);

foreach($subscribers as $subscriber){

    $message->addTo($subscriber->email);
}
$message->send();

Zend_Mail - adding recipients

Her abone için bir nesne oluşturmak ve daha sonra son bunların dışında herhangi bir şey yapmıyoruz gibi görünüyor bana. foreach döngü içindeki $message->send çağrıyı taşıyın.

Onun doğru değil. Bu kontrol http://framework.zend.com/manual/1.12/en/zend.mail.multiple-emails.html. Ben de aynı şeyi denedim ve tüm posta göndermek mümkün duyuyorum