20

我无法使用 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('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 配置下有一个假脱机条目,请将其删除,例如:

快速邮件:
    运输:%mailer_transport%
    主机:%mailer_host%
    用户名:%mailer_user%
    密码:%mailer_password%
    假脱机:{类型:内存}

应该:

快速邮件:
    运输:%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 中设置以下配置,以防止在测试期间发送邮件,也许你做过同样的事情并忘记了?

如果这是在 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

配置.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 回答