Pregunta

Estoy usando Symfony + SwiftMailer y obtener el siguiente error de SwiftMailer:

500 | Internal Server Error | Swift_TransportException
Expected response code 220 but got code "", with message ""

y no puede entender por qué. Estoy usando hMailServer en mi máquina local, y tengo mi archivo de configuración factories.yml (como yo estoy usando Symfony) de la siguiente manera:

  mailer:
    class: sfMailer
    param:
      logging: %SF_LOGGING_ENABLED%
      charset: %SF_CHARSET%
      delivery_strategy: realtime
      transport:
        class: Swift_SmtpTransport
        param:
          host: splodge.loc
          port: 25
          encryption: ~
          username:   ~
          password:   ~

Estoy usando el siguiente código para enviar:

$message = $this->getMailer()->compose(
    'noreply@splodge.loc',
    'info@splodge.loc',
    'Reset Password', 
    'Message'
);
$result = $this->getMailer()->send($message);

Alguien ha tenido un problema como esto antes?

He encontrado que a veces, y muy al azar, el envío se realizará, pero todas las otras veces, me sale el mensaje de error anterior. Así que constantemente actualizar la página que envía el correo, no de forma impredecible, y que el código funciona a veces, es un poco difícil de averiguar lo que está mal.

Cualquier ayuda será muy apreciada!


La investigación adicional ha demostrado que el servidor SMTP de envío [220 localhost ESMTP], pero después de echar un vistazo a los registros de hMailServer, he descubierto lo siguiente:

"TCPIP" 5232    "2010-06-16 11:40:54.043"   "TCPConnection - Posting AcceptEx on 0.0.0.0:25"
"DEBUG" 5232    "2010-06-16 11:40:54.043"   "Creating session 51"
"SMTPD" 5232    51  "2010-06-16 11:40:54.043"   "127.0.0.1" "SENT: 220 localhost ESMTP"
"DEBUG" 5296    "2010-06-16 11:40:54.199"   "The read operation failed. Bytes transferred: 0 Remote IP: 127.0.0.1, Session: 51, Code: 10054, Message: An existing connection was forcibly closed by the remote host"
"DEBUG" 5296    "2010-06-16 11:40:54.199"   "Ending session 51"

Podría ser que SwiftMailer es HELO / EHLOing demasiado pronto, y que esto es simplemente una cuestión de tiempo? ¿Puedo retrasar la transmisión HELO un poco?

Los buenos registros, cuando la cosa realmente envía el siguiente aspecto:

"TCPIP" 5232    "2010-06-16 11:42:21.278"   "TCPConnection - Posting AcceptEx on 0.0.0.0:25"
"DEBUG" 5232    "2010-06-16 11:42:21.294"   "Creating session 54"
"SMTPD" 5232    54  "2010-06-16 11:42:21.294"   "127.0.0.1" "SENT: 220 localhost ESMTP"
"SMTPD" 5224    54  "2010-06-16 11:42:21.294"   "127.0.0.1" "RECEIVED: EHLO splodge.loc"

Así que tiene que estar relacionado con el reconocimiento HELO / EHLO. ¡Por favor avise! :)

¿Fue útil?

Solución 2

administrado para conseguir este trabajo mediante la creación de un bucle que reintentos el envío de correo ...

$sendResult = false;
do
{
    try
    {
        $message = Swift_Message::newInstance()
            ->setFrom('noreply@splodge.loc', 'Mr.Postman')
            ->setTo($to)
            ->setSubject('Password reminder...')
            ->setBody($this->getPartial('resetPasswordEmail', array(
                'newPassword' => $newPassword)), 'text/html');
        $sendResult = $this->getMailer()->send($message);
    }
    catch(Exception $e){/*Do nothing*/}
}
while($sendResult !== 1);

A continuación voy a añadir algunos parámetros de configuración para limitar el número de reintentos.

Otros consejos

Suena como un problema de SMTP.

¿Qué ocurre si se intenta lo siguiente desde la línea de comandos:

telnet splodge.loc 25

Se puede conectar? Empieza la línea de respuesta con 220?

Si no es así, entonces usted tiene un problema con el servidor SMTP (o tal vez cortafuegos) config.

i sólo quería añadir a esto. para mí el problema fue cuando mi reinicio del servidor SMTP, palomar no volverá a subir. tan pronto como empecé palomar, todo estaba bien. así que al final era un problema smtp así que si alguien más tiene este problema se puede casi asegurarse de que es un problema smtp.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top