20

symfony2とswiftmailerでメールを送信できません。また、この問題をデバッグする方法についても少し迷っています。以下はコードです。まず、表示するフォームを作成しています。送信時に(request-> method == post)次に、メールを送信しようとします。エラーは発生せず、ありがとうページに移動しますが、メールが届きません。私は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('no-reply@mysite.com')
            ->setTo('email@mysite.com')
            ->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());
}
4

7 に答える 7

25

parameters.ymlを投稿できますか?

また、電子メールをすぐに送信できるように、スプーリングが無効になっていることを確認してください。Swiftmailer構成でスプールエントリがある場合は、次のように削除します。

swiftmailer:
    トランスポート:%mailer_transport%
    ホスト:%mailer_host%
    ユーザー名:%mailer_user%
    パスワード:%mailer_password%
    スプール:{タイプ:メモリ}

する必要があります:

swiftmailer:
    トランスポート:%mailer_transport%
    ホスト:%mailer_host%
    ユーザー名:%mailer_user%
    パスワード:%mailer_password%
于 2013-10-09T22:18:14.243 に答える
13

メールスプーリングが設定されている可能性があります。その場合は、以下を実行する必要があります。

php app/console swiftmailer:spool:send

スプールされた電子メールを送信します。

詳細については、 http://symfony.com/doc/master/cookbook/email/spool.htmlを確認してください。

于 2013-04-11T06:51:58.483 に答える
10

symfony2でメールを送信する方法の全手順はここにあります。私はそれがうまくいくように見えるところでそれをテストしました。

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

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

于 2012-09-19T07:28:50.690 に答える
6

config_dev.ymlで次の構成をテスト中に送信されるメールを-prevent-に設定することがよくありますが、同じことをして忘れてしまったのではないでしょうか。

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

swiftmailer:
  disable_delivery:  true
于 2012-04-05T12:32:47.453 に答える
5

上記の解決策とは別に、swiftmailerコードを使用する関数から削除dieすることをお勧めします。exitこれにより、コードが適切である場合に問題が修正されます。

于 2016-08-10T06:58:22.617 に答える
0

ovh、siwftmailer、fosUserBundleでメールを受信できません。

config.ymlにこれを追加することを検討してください

fos_user:
    from_email:
            address:        noreply@yourdomain.com
            sender_name:    yourname

これを行わない場合、fosユーザーバンドルはnoreply@exemple.comを含む電子メールを送信し、OVHはこれをスパムとしてフラグ付けします。

ソース:https ://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/emails.md

于 2014-06-06T16:19:41.003 に答える
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('username@xx.eu')
            ->setTo('xxx@stackoverflow.eu')
            ->setBody('message');
$this->get('mailer')->send($messageObject);
于 2015-04-28T07:55:24.240 に答える