Perché SwiftMailer gettando “Internal Server Error”?
-
27-09-2019 - |
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! :)
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.