2016-08-28 1 views
0

Следующий код работает на сервере я использую (Hosteurope WebPack):управления Sendmail с Swiftmailer в Symfony

mail('[email protected]', 'some subject', 'sendmail is working', 'From: [email protected]', ""); 

Следующий код не является:

$message = \Swift_Message::newInstance() 
    ->setSubject('some subject') 
    ->setFrom('[email protected]') 
    ->setTo('[email protected]') 
    ->setBody('sendmail via swiftmail is working'); 
$mailer = $this->get('mailer'); 
$logger = new Swift_Plugins_Loggers_ArrayLogger(); 
$mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($logger)); 
$mailer->send($message); 

И в $ логгер пишет эта ошибка:

++ Starting Swift_Transport_SendmailTransport 
<< 
!! Expected response code 220 but got code "", with message "" (code: 0)" 
    ... 

Моя конфигурация:

swiftmailer: 
    transport: "sendmail" 
    sender_address: "[email protected]" 

Я не понимаю, почему один работает, а другой нет, поскольку, насколько я могу судить, звонок должен быть идентичным.

ответ

0

Проблема заключается в том, что Sendmail Transport не отправляет From Header (как и ожидалось). Использования «почты», как транспорт работал для меня:

swiftmailer: 
    transport: "sendmail" 
    sender_address: "[email protected]" 

Надеется, что это может помочь другим, имеющим проблемы с Hosteurope и Sendmail/почтами отправки.

0

Если вы используете sendmail с symfony, может случиться, что вам нужно передать некоторые дополнительные параметры. Например:

'/usr/sbin/sendmail -t -i'

Чтобы выяснить, какие параметры должны быть переданы, создать phpinfo.php на сервере,

<?php 
phpinfo(); 
> 

запустить его и найти записи, которые начинаются с:

sendmail_from 
sendmail_path 

Любое из них покажет /usr/sbin/sendmail -some_options

Чтобы заставить его работать в symfony, вы не можете вставить его непосредственно в config.yml - по крайней мере, по моему опыту.

Открываем services.yml и добавить:

swiftmailer.mailer.default.transport: 
    class:  Swift_SendmailTransport 
    arguments: ['/usr/sbin/sendmail -t -i'] 

Где arguments путь от входа PHP сверху.

Затем установите config.yml на:

swiftmailer: 
    transport: sendmail 

Или, если вы хотите отделить Дев и прод окр, вставить его в одном из них.

Смежные вопросы