Symfony 3 - Swiftmailer не отправляет электронную почту - PullRequest
1 голос
/ 17 мая 2019

Я пытаюсь отправить электронное письмо с помощью SwiftMailer (версия = Swift-5.4.8) после того, как пользователь отправит форму. Я не могу определить, почему электронное письмо не отправляется. Я только попытался использовать настройку Gmail, так как слышал, что его проще всего использовать (я новичок в веб-разработке).

Я попытался изменить config.yml, parameters.yml

parameters.yml:

    parameters:
        database_host: 127.0.0.1
        database_port: null
        database_name: symfony
        database_user: root
        database_password: null
        mailer_transport: gmail
        mailer_encryption: ssl
        mailer_auth_mode: login
        mailer_host: smtp.gmail.com
        mailer_user: myemail@gmail.com
        mailer_password: mypass
        secret: mysecret

config.yml (соответствующий фрагмент, пожалуйста, lmk, если нужны другие части)

    swiftmailer:
        transport: '%mailer_transport%'
        host: '%mailer_host%'
        username: '%mailer_user%'
        password: '%mailer_password%'
        spool: { type: memory }

1011 * контроллер по умолчанию * $form = $this->createFormBuilder() ->add('from', EmailType::class) ->add('message', TextareaType::class) ->add('send',SubmitType::class) ->getForm() ; if ($form->isSubmitted()){ $data = $form->getData(); $message = \Swift_Message::newInstance() ->setSubject('Join Our Team Request') ->setFrom($data['from']) ->setTo('myemail2@gmail.com') ->setBody( $data['message'],'text/plain' ) ; $this->get('mailer')->send($message); } return $this->render('xxx.html.twig', array("title" => "...","join_team_form" =>$form->createView())); Вид и форма отображаются правильно. Похоже, что форма отправляется правильно, однако я никогда не получаю электронное письмо. Снова новичок в веб-разработке, любые предложения приветствуются. РЕДАКТИРОВАТЬ: мне удалось успешно настроить и отправить электронное письмо, используя командную строку и команду «php bin \ console swiftmailer: email: send». Проблема была в том, что он использовал файл dev_config, глупая ошибка. Однако, когда я все еще заполняю форму и нажимаю кнопку отправки, электронное письмо не отправляется. Только с использованием вышеуказанной команды. Любое понимание? РЕДАКТИРОВАТЬ 2: Решение для первого EDIT было запущено «обновление композитора» .... приятно ...

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Лучшая практика отправки почты с помощью gmail на Symfony описана в этой документации

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

Ниже должно работать.Обновите ваш config.yml до

swiftmailer:
    url: 'gmail://%mailer_user%:%mailer_password%@localhost?encryption=tls&auth_mode=oauth'
    spool: { type: 'memory' }

Еще одно предложение - проверить правильность вашей формы перед отправкой почты.В противном случае отправка не удастся, если from равен null или ""

if ($form->isSubmitted() && $form->isValid()){ ... }

Дайте мне знать, если это не сработает

0 голосов
/ 17 мая 2019

Попробуйте использовать шифрование tls и протокол smtp. Ваш config.yml будет похож на это:

# Swiftmailer Configuration
swiftmailer:
    transport: 'smtp'
    host: 'smtp.gmail.com'
    username: 'myemail@gmail.com'
    password: 'mypass'
    encryption: tls
    auth_mode: login

И вы должны активировать доступ к менее защищенным приложениям и отключить двухэтапную аутентификацию в своей учетной записи Gmail.

...