Symfony2とswiftmailerでメールを送信できません。この問題のデバッグ方法についても少し迷っています。以下はコードです。まず、表示するフォームを作成しています。送信時(リクエスト->メソッド==投稿)、メールを送信しようとします。エラーは発生せず、お礼ページに移動しましたが、メールが届きません。私はprodと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
Parameters.ymlを投稿できますか?
また、電子メールをすぐに送信できるように、スプールが無効になっていることを確認してください。 Swiftmailer設定の下にスプールエントリがある場合は、次のように削除します。
swiftmailer: transport:%mailer_transport% Host:%mailer_Host% username:%mailer_user% password:%mailer_password% スプール:{タイプ:メモリ}
する必要があります:
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 を確認してください。
私はしばしばconfig_dev.ymlの次の設定をテスト中にメールが送信されるのを防ぐために設定しました、多分あなたは同じことをして、忘れましたか?
これがconfig_dev.ymlにある場合は、falseに設定します。
swiftmailer:
disable_delivery: true
上記の解決策とは別に、swiftmailerコードを使用する関数からdie
またはexit
を削除することをお勧めします。これにより、コードが適切であれば問題が解決します。
Ovh、siwftmailer、fosUserBundleでメールを受信できない
これをconfig.ymlに追加することを検討してください
fos_user:
from_email:
address: [email protected]
sender_name: yourname
これを行わない場合、fosユーザーバンドルは[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);