TigerZF
🌐Español

45.4. Uso de diferentes transportes

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

[Note] Transportes adicionales

Se pueden escribir transportes adicionales implementando Zend_Mail_Transport_Interface.

45.4.1. Uso del transporte de archivos

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

[Note] 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.