Почему бы swiftmailer не взять env vars? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь настроить swiftmailer для отправки электронной почты из моего приложения symfony4, из моей локальной среды (Wamp, win10) с помощью gmail.

Конфигурация работает хорошо, когда я добавляю все свои параметры в config /файл packages / swiftmailer.yaml, но как только я пытаюсь использовать переменные файла .env, он не работает, и я получаю эту ошибку:

14:01:11 DEBUG     [php] Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
[
  "exception" => Symfony\Component\Debug\Exception\SilencedErrorContext {
    +count: 1
    -severity: E_WARNING
    trace: {
      C:\wamp\www\crm-granger\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php:267 { …}
      C:\wamp\www\crm-granger\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php:58 { …}
    }
  }
]
14:01:11 DEBUG     [php] Warning: stream_socket_client(): Failed to enable crypto
14:01:11 DEBUG     [php] Warning: stream_socket_client(): unable to connect to ssl://smtp.gmail.com:465 (Unknown error)
14:01:11 ERROR     [app] Exception occurred while flushing email queue: Connection could not be established with host smtp.gmail.com [ #0]

Работает:

config / packages / swiftmailer.yaml

swiftmailer:
    transport:        smtp
    username:         myemail@gmail.com
    password:         mypassword
    host:             smtp.gmail.com
    port:             465
    encryption:       ssl
    auth-mode:        login
    spool: { type: 'memory' }
    stream_options:
        ssl:
            allow_self_signed: true
            verify_peer: false
            verify_peer_name: false 

Не работает:

.env

MAILER_TRANSPORT=smtp
MAILER_HOST=smtp.gmail.com
MAILER_USERNAME=myemail@gmail.com
MAILER_PASSWORD=mypassword
MAILER_PORT=465
MAILER_ENCRYPTION=ssl

config / packages / swiftmailer.yaml

swiftmailer:
    transport:        '%env(MAILER_TRANSPORT)%'
    username:         '%env(MAILER_USERNAME)%'
    password:         '%env(MAILER_PASSWORD)%'
    host:             '%env(MAILER_HOST)%'
    port:             '%env(MAILER_PORT)%'
    encryption:       '%env(MAILER_ENCRYPTION)%'
    auth-mode:        login
    spool: { type: 'memory' }
    stream_options:
        ssl:
            allow_self_signed: true
            verify_peer: false
            verify_peer_name: false 

Вары появляются и хорошо настраиваются, когда я делаю:

php bin/console about
bin/console debug:config swiftmailer

дайте мне это:

Current configuration for extension with alias "swiftmailer"
============================================================

swiftmailer:
    default_mailer: default
    mailers:
        default:
            transport: '%env(MAILER_TRANSPORT)%'
            username: '%env(MAILER_USERNAME)%'
            password: '%env(MAILER_PASSWORD)%'
            host: '%env(MAILER_HOST)%'
            port: '%env(MAILER_PORT)%'
            encryption: '%env(MAILER_ENCRYPTION)%'
            auth_mode: login
            spool:
                type: memory
                path: 'C:\wamp\www\my-project\var\cache\dev/swiftmailer/spool'
                id: null
            stream_options:
                ssl:
                    allow_self_signed: true
                    verify_peer: false
                    verify_peer_name: false
            delivery_addresses:
                - myemail@gmail.com
            url: null
            command: '/usr/sbin/sendmail -bs'
            timeout: 30
            source_ip: null
            local_domain: null
            logging: true
            delivery_whitelist: {  }

Что я делаю не так?

1 Ответ

0 голосов
/ 30 января 2019

ваш файл yaml перезапишет файл .env.Так что продолжайте с конфигом Yaml.Это более подробно и логично.

...