2012-01-27 10 views

Respuesta

1

No puede. swiftmailer/php en realidad no entrega el correo por usted, simplemente lo entregan al servidor SMTP, y ESE servidor hace la entrega por usted. Necesitaría decirle al SMTP que no procese la cola saliente para 'detener' la entrega.

En términos reales, swift/php simplemente camina hasta la esquina y deja caer el sobre en el buzón. El camión postal aparece inmediatamente después e inicia el proceso de envío del correo en su camino a través del sistema postal. Pero eso está completamente fuera del alcance de PHP.

+1

¿Qué sucede si estoy usando sendmail como medio de transporte? (Swift_SendmailTransport) – crickeys

+0

sendmail es uno de los muchos servidores SMTP. –

5

Ésta es una cuestión de edad, pero desde que entró en mi búsqueda de google, voy a responder con lo que me di cuenta.

¡SÍ! Swiftmailer tiene la capacidad de escribir en un spool en lugar de enviar de inmediato. La implementación es bastante fácil:

$spool = new Swift_FileSpool('/where/you/want/your/spool'); 
$transport = Swift_SpoolTransport::newInstance($spool); 
$mailer = Swift_Mailer::newInstance($transport); 

Esto le dice a swiftmailer que debe escribir mensajes en el disco en lugar de enviarlos. Luego, usando un trabajo cron u otro activador, envíe los mensajes usando algo como:

$spool = new Swift_FileSpool('/where/you/put/your/spool'); 
$spool_transport = Swift_SpoolTransport::newInstance($spool); 

// Create the smtp transport. 

$smtp_transport = Swift_SmtpTransport::newInstance('your.smtp.host', 25); 

// Get the messages from the spool 
$spool = $spool_transport->getSpool(); 

// Send the messages via the real transport. 
$sent = $spool->flushQueue($smtp_transport); 
Cuestiones relacionadas