Я использую Symfony + SwiftMailer и получаю следующую ошибку от SwiftMailer:
500 | Internal Server Error | Swift_TransportException
Expected response code 220 but got code "", with message ""
и не могу понять, почему. Я использую hMailServer на своем локальном компьютере и настроил мой файл factories.yml (как я использую Symfony) следующим образом:
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: ~
Я использую следующий код для отправки:
$message = $this->getMailer()->compose(
'noreply@splodge.loc',
'info@splodge.loc',
'Reset Password',
'Message'
);
$result = $this->getMailer()->send($message);
У кого-нибудь была такая проблема раньше?
Я обнаружил, что иногда, и очень случайно, отправка проходит, но каждый раз, я получаю сообщение об ошибке выше. Поэтому постоянное обновление страницы, которая отправляет почту, непредсказуемо завершается сбоем, и, поскольку код иногда работает, довольно трудно понять, в чем дело.
Любая помощь будет высоко оценена!
Дальнейшие исследования показали, что SMTP-сервер отправляет [220 localhost ESMTP], но после просмотра журналов hMailServer я обнаружил следующее:
"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"
Может ли быть так, что SwiftMailer слишком HELO / EHLOing слишком рано, и что это просто проблема времени? Могу ли я немного задержать передачу HELO?
Хорошие журналы, когда вещь на самом деле отправляет, выглядит следующим образом:
"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"
Так что это должно быть связано с подтверждением HELO / EHLO. Пожалуйста, порекомендуйте! :)