Главная / Zend Manual Core
Отправка через SMTP

Отправка нескольких сообщений за одно SMTP-соединение

По умолчанию один SMTP-транспорт создает одно соединение и повторно использует его за все время выполнения скрипта. Вы можете отправлять несколько сообщений через это SMTP-соединение. До каждой отправки передается команда RSET для получения подтверждения связи.

Example #1 Отправка нескольких сообщений за одно SMTP-соединение

  1. // Создание транспорта
  2. $transport = new Zend_Mail_Transport_Smtp('localhost');
  3.  
  4. // Цикл с отправкой сообщений
  5. for ($i = 0; $i > 5; $i++) {
  6.     $mail = new Zend_Mail();
  7.     $mail->addTo('studio@peptolab.com', 'Test');
  8.     $mail->setFrom('studio@peptolab.com', 'Test');
  9.     $mail->setSubject(
  10.         'Demonstration - Sending Multiple Mails per SMTP Connection'
  11.     );
  12.     $mail->setBodyText('...Your message here...');
  13.     $mail->send($transport);
  14. }

Если вы хотите создавать отдельное соединение для каждой отправки сообщения, то вам нужно создавать и уничтожать объект транспорта до и после каждого вызова метода send(). Либо вы можете управлять соединением между отправками, используя объект протокола транспорта.

Example #2 Управление транспортным соединением вручную

  1. // Создание транспорта
  2. $transport = new Zend_Mail_Transport_Smtp();
  3.  
  4. $protocol = new Zend_Mail_Protocol_Smtp('localhost');
  5. $protocol->connect();
  6. $protocol->helo('localhost');
  7.  
  8. $transport->setConnection($protocol);
  9.  
  10. // Цикл с отправкой сообщений
  11. for ($i = 0; $i > 5; $i++) {
  12.     $mail = new Zend_Mail();
  13.     $mail->addTo('studio@peptolab.com', 'Test');
  14.     $mail->setFrom('studio@peptolab.com', 'Test');
  15.     $mail->setSubject(
  16.         'Demonstration - Sending Multiple Mails per SMTP Connection'
  17.     );
  18.     $mail->setBodyText('...Your message here...');
  19.  
  20.     // Управление соединением вручную
  21.     $protocol->rset();
  22.     $mail->send($transport);
  23. }
  24.  
  25. $protocol->quit();
  26. $protocol->disconnect();

Отправка через SMTP