Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Mandar emails en segundo plano con Symfony2

18 de septiembre de 2015

Hola,

Estoy usando Swift_message (por defecto en Symfony 2.4) para mandar emails a usuarios cuando en la web ocurre un determinado evento importante.

La cuestión, tras probar varias opciones, es que el entorno de desarrollo de Symfony2 se cae con sólo mandar 10 emails. Parece un simple problema de timeout.

Mientras que la web trabaja enviando emails (uso gmail como motor para pruebas), aparece: "An error occurred while loading the web debug toolbar (404: Not Found)" en una ventana.

Si cancelo varias veces hasta que acaba el proceso de envío de mails, todo bien. Si acepto, se abre el profiler indicando error.

Por eso creo que se solucionaría si hubiera alguna forma de mandar los emails en segundo plano.

Si no lo soluciono, lo implementaré con un comando que se pueda automatizar en el servidor.

un saludo.


Respuestas

#1

Para solucionar este problema tienes dos soluciones:

  • Igual ya lo has leído, pero en este artículo explican cómo se trabaja con los emails en el entorno de desarrollo. Como verás, hay muchas opciones interesantes que van a resolver tu problema inmediatamente.
  • Si tienes que enviar los emails realmente durante el desarrollo de la aplicación, entonces tiene que configurar Swiftmailer para que los emails no se envíen al momento sino que se guarden en una cola (en realidad es un archivo y luego hay un comando que envía los mensajes encolados). Esto lo explican en este otro artículo.

@javiereguiluz

18 septiembre 2015, 21:47
#2

El spool ha solucionado mi problema. Gracias.

@nando_sosa

18 septiembre 2015, 22:02
#3

No olvides configurar una tarea periódica para ejecutar el comando swiftmailer:spool:send. Si no, los emails se quedarán en la cola para siempre.

@javiereguiluz

18 septiembre 2015, 22:33