Domanda

Sto usando Symfony + SwiftMailer e ottenere il seguente errore da SwiftMailer:

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

e non può capire perché. Sto usando hMailServer sulla mia macchina locale, e ho installato il mio file factories.yml (come sto usando Symfony) come segue:

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

Sto utilizzando il seguente codice da inviare:

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

Qualcuno ha avuto un problema simile prima?

Ho scoperto che a volte, e molto a caso, l'invio andrà in porto, ma tutte le altre volte, ottengo il messaggio di errore di cui sopra. Così costantemente aggiornare la pagina che invia la posta, non riesce imprevedibile, e come il codice funziona a volte, è abbastanza difficile capire cosa c'è che non va.

Ogni aiuto sarà molto apprezzato!


Ulteriori indagini hanno dimostrato che il server SMTP non inviare [220 localhost ESMTP], ma dopo aver preso uno sguardo al log hMailServer, ho scoperto quanto segue:

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

E 'possibile che SwiftMailer è HELO / EHLOing troppo presto, e che questa è semplicemente una questione di tempo? Posso ritardare la trasmissione HELO un po '?

I buoni ceppi, quando la cosa in realtà invia appare come segue:

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

Quindi deve essere quello di fare con il riconoscimento HELO / EHLO. Si prega di avvisare! :)

È stato utile?

Soluzione 2

Siamo riusciti a ottenere questo lavoro con la creazione di un ciclo che tentativi l'invio posta ...

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

Poi mi aggiungerò alcune impostazioni di configurazione per limitare il numero di tentativi.

Altri suggerimenti

suona come un problema SMTP.

Che cosa succede se si tenta il seguente dalla riga di comando:

telnet splodge.loc 25

Si può collegare? Fa l'inizio linea di risposta con 220?

Se no, allora hai un problema con il server SMTP (o forse firewall) config.

volevo solo aggiungere su questo. per me il problema è stato quando il mio server smtp riavvio, colombaia non è tornato su. appena ho iniziato a colombaia, tutto andava bene. così alla fine è stato un problema smtp così se qualcun altro ha questo problema si può tranquillamente essere sicuro che sia un problema smtp.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top