2014-09-27 3 views
1

Эта же проблема уже имеет некоторые аналогичные записи в stackoverflow, но ни у одного из них никогда не было ответов/решений, кроме некоторых более простых кодировок намеки.swiftmailer, ovh, INTERMITTEND Ожидаемый код ответа 250, но получил код "", с сообщением ""

Я использую Symfony2 framework + swiftmailer на общем сервере OVH, и при отправке почты через пользовательский интерфейс (на веб-странице) я периодически получаю сообщение об ошибке http: Ожидаемый код ответа 250, но получил код «», с сообщение "".

С некоторой ошибкой для этой ошибки я понимаю, что сервер получает заказ на чтение почты, которая пуста, так что она не знает, что делать с пустой почтой (нет, нет, нет, ... NULL в некотором смысле).

Я не отправляю массовую почту, только один за другим. Прерывистый характер этого делает отладочную работу неудобной, так как в любое время, когда вы делаете небольшую настройку, и, похоже, она работает, вы не можете быть уверены в том, что последняя настройка исправлена ​​или если «она» просто решила «просыпаться» снова. До сих пор все мои маленькие трюки для счетчиков закончились тем, что пустой smtp-возврат с сервера снова появился через несколько часов/несколько дней. Из-за этого я все еще скрываю сайт за htaccess, так что трафик чрезвычайно мал (это в основном только я). Прерывание составляет от 5 до 10% всех писем. Если эта пустая ошибка появляется, то для 95% любой настройки в коде ошибка остается. Существует только одна «настройка», которая до сих пор заставляла ошибку «надежно»: перезагружать параметр.yml, но поскольку есть 5% случаев, когда я настраивал что-то еще, и ошибка также уходила, я не могу быть уверен если я должен сосредоточиться на параметрах. Но опять же, ошибка вернется через часы/дни в любом случае. Все больше похоже на проблему с кешем сервера/CDM.

Вот информация о коде, который будет известен (поскольку он работает «много раз», код как таковой, вероятно, чистый .., но никто никогда не знает).

parameters.yml:

mailer_transport: smtp 
mailer_host: ssl0.ovh.net 
mailer_port: 465 
# OR alternatively (gives the same result) : 
# mailer_host: ns0.ovh.net 
# mailer_port: 587 
mailer_user: ********* 
mailer_password: ********** 

config.yml:

transport: "%mailer_transport%" 
host:  "%mailer_host%" 
username: "%mailer_user%" 
password: "%mailer_password%" 
port:  "%mailer_port%" 

# and also : 
fos_user : 
    from_email:  
     address:  ********* (same as mailer_user) 
     sender_name: *********** 

controllerXYZ:

$mailer=$this->get('mailer'); 
$params=$form->getData(); 
$subject=$params['subject']; 
$body=$params['body']; 
$userManager=$this->get('fos_user.user_manager'); 
$toUser=$userManager->findUserBy(array('username'=>$comment->getAuthor())); 
$to=$toUser->getEmail(); 
$from=$this->getUser()->getEmail(); 

$message= \Swift_Message::newinstance() 
->setSubject($subject) 
->setBody($body) 
->setFrom($from) 
->setTo($to); 

$mailer->send($message); 

I "приспособленный" со сном (х), с \ поставщиком \ SM \ SM \ lib \ classes \ Swift \ Transport, файл = тайм-аут EsmtpTransport.php, некоторые попытки/уловы, идентификаторы портов/серверов, катушка, но всегда получили ошибку после какое-то время. Разумеется, все настройки настроены на «стандарт».

Я мог бы попробовать другую почтовую программу (phpmail), но так как кажется OVH/CDM/server related, я беспокоюсь, чтобы снова получить то же самое.

В качестве альтернативы я мог бы также попытаться сделать ошибку «по назначению», чтобы получить подсказку; но я даже не мог этого сделать.

ДАЙТЕ МНЕ, ПОЖАЛУЙСТА, НАПРАВЛЕНИЕ, ЧТОБЫ ПРОТИВАТЬ!

ответ

0

В течение трех месяцев я не нашел причину прерывистой проблемы. Поэтому я реализовал работу. Хотя я не очень доволен, это позволило мне публиковать веб-сайт.

Вот попытаться поймать обходной путь, некрасиво, но работает с 1 месяца (с классами Symphony2):

$message= \Swift_Message::newinstance() 
    ->setSubject($subject) 
    ->setBody($body) 
    ->setFrom($from) 
    ->setTo($to); 

try 
    { 
     try 
      { 
       $mailer->send($message,$failure); 
       $translatedText1 = $this->get('translator')->trans('flash.mail.sent1'); 
       $translatedText2 = $this->get('translator')->trans('flash.mail.sent2'); 
       $messageOut=$translatedText1.$mailarticle->getAuthor().$translatedText2; 
      } 
     catch(\Exception $e) 
      { 
       mail($to,$subject,$body,'From: '.$from); 
       $translatedText1 = $this->get('translator')->trans('flash.mail.std1'); 
       $translatedText2 = $this->get('translator')->trans('flash.mail.std2'); 
       $messageOut=$translatedText1.$mailarticle->getAuthor().$translatedText2; 
      }          
    } 
catch(\Exception $e) 
     { 
      $translatedText1 = $this->get('translator')->trans('flash.mail.except1'); 
      $translatedText2 = $this->get('translator')->trans('flash.mail.except2'); 
      $messageOut=$translatedText1.$e->getMessage().$translatedText2.$failure; 
     } 

Часть $ translatedText1/2 и $ messageout просто тексты сообщений показаны пользователем после отправки почты. Объект-> транс() - текстовая функциональность Symfony.

Странно, что, хотя я не получил ни одного ответа, вопрос получил некоторые кредитные очки. Тем не менее, поскольку вышеупомянутое решение не решает первопричину - любой ответ, обращаясь к делу, по-прежнему очень ценится!

0

Вот мой план OVH с общей электронной почтой config.yml (значение параметров курса, скопированными здесь для большей наглядности):

# Swiftmailer Configuration 
swiftmailer: 
    transport: mail 
    auth_mode: login 
    host:  ssl0.ovh.net 
    port:  587 
    username: "%mailer_user%" 
    password: "%mailer_password%" 
    spool:  { type: memory } 

Других транспортов я пытался до того: Sendmail, Smtp. Странная вещь: однажды я установил транспортную конфигурацию на mail, я заметил задержку, прежде чем Symfony использовал выбранную реализацию Swift_Transport. Могу ли я сказать, что я был в режиме dev?

Итак, мой совет: установить конфигурацию, пойти и выпить кофе, наслаждаться.