Ответ 1
Здесь вы можете найти всю процедуру о том, как отправлять электронные письма с помощью symfony2. Я просто тестировал его, кажется, работает нормально.
http://tutorial.symblog.co.uk/docs/validators-and-forms.html#sending-the-email
У меня возникли проблемы с отправкой писем с symfony2 и swiftmailer. Я также немного потерял, как отладить эту проблему. Ниже приведен код. Сначала я создаю форму для отображения. На submit (request- > method == post) я попытаюсь отправить электронное письмо. Я не получаю никаких ошибок, и он забирает меня на страницу thankyou, однако я не получаю никаких писем. Я тестировал на prod и dev. В dev я открыл профилировщик после отправки, и он показывает 0 сообщений электронной почты. Любая помощь приветствуется! Спасибо!
public function contactAction(Request $request)
{
$defaultData = array('name' => 'Name', 'email' => 'Email', 'subject' => 'Subject', 'message' => 'Message');
$form = $this->createFormBuilder($defaultData)
->add('name', 'text')
->add('email', 'email')
->add('subject', 'text')
->add('message', 'textarea')
->getForm();
if($request->getMethod() == 'POST') {
$form->bindRequest($request);
$data = $form->getData();
$message = \Swift_Message::newInstance()
->setSubject($data['subject'])
->setFrom('[email protected]')
->setTo('[email protected]')
->setBody($this->renderView('AdaptiveSiteBundle:Default:email.txt.twig', array('name' => $data['name'], 'message' => $data['message'])))
;
$this->get('mailer')->send($message);
return $this->redirect($this->generateUrl('thankyou'));
}
return array("form" => $form->createView());
}
Здесь вы можете найти всю процедуру о том, как отправлять электронные письма с помощью symfony2. Я просто тестировал его, кажется, работает нормально.
http://tutorial.symblog.co.uk/docs/validators-and-forms.html#sending-the-email
Можете ли вы опубликовать параметры .yml?
Также убедитесь, что буферизация отключена, поэтому электронная почта может быть немедленно отправлена. Если в настройках swiftmailer имеется запись очереди, удалите ее, например:
swiftmailer: transport: %mailer_transport% host: %mailer_host% username: %mailer_user% password: %mailer_password% spool: { type: memory }
Должно быть:
swiftmailer: transport: %mailer_transport% host: %mailer_host% username: %mailer_user% password: %mailer_password%
Возможно, у вас установлен буферизация почты. Если это случай, вам нужно запустить:
php app/console swiftmailer:spool:send
для отправки буферизованных писем.
Подробнее о http://symfony.com/doc/master/cookbook/email/spool.html.
Помимо вышеуказанного решения, я предлагаю удалить функцию die
или exit
из функции, в которой вы используете код swiftmailer. Это исправит вашу проблему, если ваш код будет правильным.
Я часто устанавливаю следующую конфигурацию в config_dev.yml для -prevent-mail, отправляемых во время тестирования, возможно, вы сделали то же самое и забыли?
Если это указано в config_dev.yml, установите для него значение false:
swiftmailer:
disable_delivery: true
У вас проблемы с получением электронной почты с помощью ovh, siwftmailer и fosUserBundle,
пожалуйста, добавьте это в свой config.yml
fos_user:
from_email:
address: [email protected]
sender_name: yourname
Если вы этого не сделаете, fos user bundle отправит электронное письмо с сообщением [email protected] и OVH как спамом.
источник: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/emails.md
config.yml
# Swiftmailer Configuration
swiftmailer:
transport: smtp
encryption: ssl
auth_mode: login
host: smtp.xx.eu
username: username
password: password
контроллер/действие
$messageObject = \Swift_Message::newInstance()
->setSubject('Subject')
->setFrom('[email protected]')
->setTo('[email protected]')
->setBody('message');
$this->get('mailer')->send($messageObject);