En caso de que desee enviar diferentes correos electrónicos a través de diferentes conexiones, también puede pasar
el objeto de transporte directamente a send() sin una llamada previa a
setDefaultTransport(). El objeto pasado anulará el transporte
por defecto para la petición send() actual.
Ejemplo 45.6. Uso de diferentes transportes
$mail = new Zend_Mail();
// build message...
$tr1 = new Zend_Mail_Transport_Smtp('server@example.com');
$tr2 = new Zend_Mail_Transport_Smtp('other_server@example.com');
$mail->send($tr1);
$mail->send($tr2);
$mail->send(); // use default again
![]() |
Transportes adicionales |
|---|---|
Se pueden escribir transportes adicionales implementando
|
Zend_Mail_Transport_File resulta útil en un
entorno de desarrollo o con fines de prueba. En lugar de enviar correos
electrónicos reales, simplemente vuelca el cuerpo y las cabeceras del correo en un archivo del sistema de archivos.
Al igual que los demás transportes, se puede configurar usando
Zend_Application_Resource_Mail, o pasando una instancia al método
send() de una instancia de Zend_Mail.
El transporte tiene dos parámetros opcionales que se pueden pasar al constructor o
mediante el método setOptions(). La opción path
especifica la ruta base donde se guardan los nuevos archivos. Si no se establece nada, el transporte
usa el directorio del sistema por defecto para archivos temporales. El segundo parámetro,
callback, define qué callback de PHP debe usarse para generar un
nombre de archivo. Como ejemplo, supongamos que necesitamos usar el correo del destinatario más un
hash como nombre de archivo:
function recipientFilename($transport)
{
return $transport->recipients . '_' . mt_rand() . '.tmp';
}
$mail = new Zend_Mail();
$mail->addTo('somebody@example.com', 'Some Recipient');
// build message...
$tr = new Zend_Mail_Transport_File(array('callback' => 'recipientFilename'));
$mail->send($tr);
El archivo resultante será algo similar a somebody@example.com_1493362665.tmp
![]() |
Incluya aleatoriedad en la generación de nombres de archivo |
|---|---|
Al generar nombres de archivo, debería inyectar algún tipo de aleatoriedad en la generación para garantizar que los nombres de archivo sean únicos. Esto es especialmente importante en servidores donde puede esperar una carga alta, ya que garantizará que, a pesar de que lleguen varias peticiones durante el mismo segundo o milisegundo, el nombre de archivo siga siendo único. |
![[Note]](images/note.png)