Pergunta

Estou usando o Symfony + Swiftmailer e recebendo o seguinte erro do Swiftmailer:

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

e não consigo descobrir o porquê. Estou usando o HmailServer na minha máquina local e configurei meu arquivo fábricas.yml (como estou usando o Symfony) da seguinte forma:

  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:   ~

Estou usando o seguinte código para enviar:

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

Alguém já teve um problema como esse antes?

Descobri que, às vezes, e muito aleatoriamente, o envio passa, mas sempre, recebo a mensagem de erro acima. Tão constantemente refrescante da página que envia o correio, falha imprevisivelmente e, como o código às vezes funciona, é meio difícil descobrir o que está errado.

Qualquer ajuda será muito apreciada!


Investigação adicional mostrou que o servidor SMTP envia [220 localhost ESMTP], mas depois de dar uma olhada nos logs do HmailServer, descobri o seguinte:

"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"

Será que Swiftmailer é Helo/Ehloing muito cedo, e que isso é simplesmente uma questão de tempo? Posso atrasar um pouco a transmissão de helo?

Os bons registros, quando a coisa realmente envia looks da seguinte maneira:

"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"

Portanto, tem a ver com o reconhecimento HELO/EHLO. Por favor informar! :)

Foi útil?

Solução 2

Conseguiu fazer isso funcionando criando um loop que experimenta o envio de e -mail ...

$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);

Em seguida, adicionarei algumas configurações de configuração para limitar o número de tentativas.

Outras dicas

Parece uma questão SMTP.

O que acontece se você tentar o seguinte da linha de comando:

telnet splodge.loc 25

Você pode se conectar? A linha de resposta começa com 220?

Caso contrário, você terá um problema com sua configuração SMTP Server (ou talvez Firewall).

Eu só queria adicionar isso. Para mim, o problema foi quando minha reinicialização do SMTP Server, Dovecot não voltou. Assim que comecei a Dovecot, tudo estava bem. Então, no final, foi um problema SMTP; portanto, se alguém tiver esse problema, você pode ter certeza de que é um problema SMTP.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top