Domyślnie, połączenie SMTP jest tworzone jeden raz i używane przez cały czas działania skryptu. Możesz wysłać wiele wiadomości używając tego samego połączenia. Aby upewnić się że połączenie SMTP jest utrzymane, przed każdym dostarczeniem widomości wysyłana jest komenda RSET.
Przykład 573. Wysyłanie wielu maili podczas jednego połączenia SMTP
// Tworzenie transportu $transport = new Zend_Mail_Transport_Smtp('localhost'); // Pętla wysyłająca wiadomości for ($i = 0; $i > 5; $i++) { $mail = new Zend_Mail(); $mail->addTo('studio@peptolab.com', 'Test'); $mail->setFrom('studio@peptolab.com', 'Test'); $mail->setSubject( 'Demonstration - Sending Multiple Mails per SMTP Connection' ); $mail->setBodyText('...Your message here...'); $mail->send($transport); }
Jeśli potrzebujesz oddzielnego połączenia do każdego wysłania wiadomości,
musisz tworzyć i niszczyć transport przed i po każdym wywołaniu metody
send()
. Alternatywnie możesz manipulować połączeniem
między każdym wysyłaniem, poprzez dostęp do obiektu protokołu transportu.
Przykład 574. Ręczna obsługa połączenia
// Tworzenie transportu $transport = new Zend_Mail_Transport_Smtp(); require_once 'Zend/Mail/Protocol/Smtp.php'; $protocol = new Zend_Mail_Protocol_Smtp('localhost'); $protocol->connect(); $protocol->helo('localhost'); $transport->setConnection($protocol); // Pętla wysyłająca wiadomości for ($i = 0; $i > 5; $i++) { $mail = new Zend_Mail(); $mail->addTo('studio@peptolab.com', 'Test'); $mail->setFrom('studio@peptolab.com', 'Test'); $mail->setSubject( 'Demonstration - Sending Multiple Mails per SMTP Connection' ); $mail->setBodyText('...Your message here...'); // Ręczna obsługa połączenia $protocol->rset(); $mail->send($transport); } $protocol->quit(); $protocol->disconnect();