2012-04-03 7 views
18

symfony2とswiftmailerで電子メールを送信できません。私もこの問題をデバッグする方法について少し失われています。以下はコードです。まず、表示するフォームを作成しています。 submit(request-> method == post)で私は電子メールを送信しようとします。私は間違いがなく、それは私に感謝のページに連れて行っていますが、私は電子メールを受け取っていません。私はprodとdevでテストしました。 devで私は提出後にプロファイラーを開いて、それは0の電子メールを示しています。どんな助けもありがとう!ありがとう!私は、多くの場合、テスト中に送信されるメールを-prevent-するconfig_dev.ymlに以下の構成を設定しSymfony2 Swiftmailerが送信しない

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()); 
} 
+1

プロファイルされたメールを表示するには、リダイレクトを削除する必要があります。 –

+0

メールサーバーをセットアップしましたか? – Flukey

+1

私はメールサーバーを設定していません...これに関するサーバー/ドキュメントに関する提案はありますか?私はubuntuを実行しています。 –

答えて

9

あなたがここにSymfony2のに電子メールを送信する方法の全体の手順を見つけることができます。私はちょうどそれを正常に動作するように見えるそれをテストしました。

http://tutorial.symblog.co.uk/docs/validators-and-forms.html#sending-the-email

http://symfony.com/doc/current/email.html

+0

良いチュートリアルですが、Gmailは機能していますが、デフォルトのlocalhost設定を使用することができませんでした。 –

+0

私のローカルサーバーでは動作しますが遠いサーバーでは動作しません(オンライン)。どうすればいいですか? – krachleur

+1

swiftmailerの遠隔サーバーのパラメータを確認してください。おそらく、あなたはdevとprod環境のためのカスタムパラメータを持っています。 –

4

、多分あなたは同じことを行ってと忘れていますか?

これはconfig_dev.ymlにある場合は、falseに設定します。

swiftmailer: 
    disable_delivery: true 
+0

いいえ、私は無効にしていません。 –

+0

もう1つの長いショットですが、Sv2のログにエラーが表示されないことがよくあります。これは/var/log/apache2/error.logに表示されます。 (申し訳ありませんが、私が言ったように、ロングショット) – Dieter

+0

リダイレクトを削除した後、私は電子メールがプロファイラを介して送信されているのを見ている..私はまだそれを受信して​​いない。 Apache、PHP、またはsymfonyのログには何もありません –

13

あなたはメールスプールセットを有することができます。その場合、次のコマンドを実行する必要があります。

php app/console swiftmailer:spool:send 

スプールされたメールを送信する。

http://symfony.com/doc/master/cookbook/email/spool.htmlを確認してください。

22

parameters.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% 
+2

これは私のために私のGmailの輸送を使用して私の作品 – Rocco

+0

ありがとう私はエラーが表示されませんでした – arsenik

0

私はあなたが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

0

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); 
4

、私はあなたの関数からdieexitを削除するように提案しますswiftmailerコードを使用してください。コードが適切であれば、これで問題は解決します。

+0

クイック&ダーティ 'die()'を 'return new Response()'に置き換えてくれました。ありがとう! –

+0

私の時間を保存してくれてありがとう –

関連する問題