Question

J'utilise Symfony + SwiftMailer et obtenir l'erreur suivante de SwiftMailer:

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

et ne peut pas comprendre pourquoi. J'utilise hMailServer sur ma machine locale, et ai installé mon dossier factories.yml (comme j'utilise Symfony) comme suit:

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

J'utilise le code suivant pour envoyer:

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

Quelqu'un at-il eu un problème comme ça avant?

Je l'ai constaté que, parfois, et très au hasard, l'envoi passe, mais tous les temps, je reçois le message d'erreur ci-dessus. Alors constamment rafraîchir la page qui envoie le courrier, ne imprévisiblement, et que le code fonctionne parfois, il est un peu difficile de comprendre ce qui ne va pas.

Toute aide sera très appréciée!


Une enquête plus approfondie a montré que le serveur SMTP ne envoie [220 localhost ESMTP], mais après avoir pris un coup d'œil à journaux hMailServer, j'ai découvert ce qui suit:

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

Se pourrait-il que SwiftMailer est HELO / EHLOing trop tôt, et que cela est tout simplement une question de temps? Puis-je retarder la transmission de HELO un peu?

Les bons journaux, quand la chose envoie réellement se présente comme suit:

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

Il doit être à voir avec la reconnaissance HELO / EHLO. S'il vous plaît donnez votre avis! :)

Était-ce utile?

La solution 2

Nous avons réussi à obtenir ce travail en créant une boucle qui réessaie la messagerie d'envoi ...

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

Ensuite, je vais ajouter quelques paramètres de configuration pour limiter le nombre de tentatives.

Autres conseils

Sons comme un problème SMTP.

Qu'est-ce qui se passe si vous essayez ce qui suit de la ligne de commande:

telnet splodge.loc 25

Pouvez-vous connecter? Est-ce que le début de la ligne de réponse avec 220?

Si non, alors vous avez un problème avec votre serveur SMTP (ou peut-être un pare-feu) config.

Je voulais juste ajouter sur ce sujet. pour moi, la question était quand mon redémarrage du serveur smtp, colombier n'a pas revenir. dès que j'ai commencé colombier, tout allait bien. donc à la fin il était un problème smtp donc si quelqu'un a ce problème, vous pouvez être à peu près sûr que c'est un problème de smtp.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top