2016-12-07 3 views
1

Может кто-нибудь объяснить мне, как работают SSL и STARTTLS с PHP?Symfony и SwiftMailer отправляются с starttls

У Il есть выделенный сервер с Postfix и Dovecot (управляемый plesk). У меня нет SSL.

Чтобы получать и отправлять свои письма, я использую SMTP/IMAP с STARTTLS.

Но на PHP, с Swiftmailer и Symfony, у меня есть только два варианта: ssl или tls. Ни одна из двух работ в моем случае, электронные письма не уходят.

Поиск по StackOverflow, я положил это в моем коде, и эта рабочая:

$transport = \Swift_SmtpTransport::newInstance('smtp.server.fr', 587, 'tls') 
->setUsername($username) 
->setPassword($password) 
->setStreamOptions(array('ssl' => array(
    'verify_peer' => false, 
    'verify_peer_name' => false, 
    'allow_self_signed' => true 
))); 

$mailer = \Swift_Mailer::newInstance($transport); 

Как вы думаете, моя конфигурация является правильным?

+0

Я думаю, что это правильно, попробуйте экспортировать конфигурацию в Ressource и проанализируйте их с помощью YamlParser. @ Разница между START TLS и SSL/TLS здесь: http://stackoverflow.com/questions/5540374/starttls-vs-ssl-tls –

ответ

0

Указанный вами порт 587 указывает, что опция tls верна. Поэтому, чтобы заставить его работать в Symfony с Swiftmailer, вам не нужно создавать экземпляр нового SmtpTransport.

Просто добавьте следующие строки в конфигурации SwiftMailer config.yml:

Swiftmailer 
    # here are some other swiftmailer options like host, user etc. 
    stream-options: 
     ssl: 
      allow_self_signed : true 
      verify_peer: false 

Продолжайте использовать SwiftMailer в обычном режиме.