2016-03-15 2 views
1

Я использую Swiftmailer с Symfony 2.8 для отправки писем с учетной записи gmail в учетную запись Outlook. код, я использую в моем контроллере:Разрешить отправлять письма с Swiftmailer

$message = \Swift_Message::newInstance() 
    ->setSubject('Test Email') 
    ->setFrom('[email protected]') 
    ->setTo('[email protected]') 
    ->setBody(
     $this->renderView(

      'QualifBundle:Mails:Welcome.html.twig' 
      ), 
     'text/html' 
    ); 
$this->get('mailer')->send($message); 

Файл конфигурации:

# Swiftmailer Configuration 
swiftmailer: 
    transport: %mailer_transport% 
    encryption: %mailer_encryption% 
    auth_mode: %mailer_auth_mode% 
    host:  %mailer_host% 
    username: %mailer_username% 
    password: %mailer_password% 
    spool:  { type: memory } 

Параметры YML:

mailer_username: [email protected] 
mailer_password: xxxxxxxxx 
mailer_transport: smtp 
mailer_encryption: ssl 
mailer_auth_mode: login 
mailer_host: smtp.gmail.com 

мне удалось решить SSL ошибки, теперь с этим кодом мой приложение работает без исключений, но почта не получена (может быть, даже не была отправлена) Как я могу решить или отпечатать это?

Update Я удалил spool:{ type: memory }, так что почта получить отправить непосредственно, и я получил это исключение.

Connection could not be established with host 127.0.0.1 [Connection refused #111] 

Мой Хозяин должен быть smtp.gmail.com не localhost любая идея?

Решение я решить мою проблему взлома файлов поставщика, я знаю, что это не самое лучшее решение, но, по крайней мере, я могу отправить почту.

искать _establishSocketConnection() fonction в StreamBuffer.php должно быть по этому пути /vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport в проект. И добавьте эти следующие строки, чтобы избежать SSL проверки:

//... 
$options = array(); 
if (!empty($this->_params['sourceIp'])) { 
    $options['socket']['bindto'] = $this->_params['sourceIp'].':0'; 
} 
//Add those two lines 
$options['ssl']['verify_peer'] = FALSE; 
$options['ssl']['verify_peer_name'] = FALSE; 
//... 

Затем я перезапустил браузер я рассылка работает как шарм

ответ

0

решение я решить мою проблему взлома файлов поставщика, я знаю, что это не самое лучшее решение, но, по крайней мере, я могу отправить почту.

искать _establishSocketConnection() fonction в StreamBuffer.php должно быть по этому пути /vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport в проект. И добавьте эти следующие строки, чтобы избежать SSL проверки:

//... 
$options = array(); 
if (!empty($this->_params['sourceIp'])) { 
    $options['socket']['bindto'] = $this->_params['sourceIp'].':0'; 
} 
//Add those two lines 
$options['ssl']['verify_peer'] = FALSE; 
$options['ssl']['verify_peer_name'] = FALSE; 
//... 

Затем я перезапустил браузер я рассылки работает как шарм

1

Прежде всего, проверьте свой аккаунт GMAIL thatYou должен включить "Access for less secure apps" в вашем аккаунте GMAIL

+0

Включите его .. такой же результат – storm

0

Другой путь вокруг:

$opt['ssl']['verify_peer'] = FALSE; 
$opt['ssl']['verify_peer_name'] = FALSE; 

$this->get('swiftmailer.mailer.default.transport.real')->setStreamOptions($opt); 

код выше, чтобы быть перед : \Swift_Message::newInstance()