Symfony2 Swiftmailer未发送

Symfony2 Swiftmailer未发送,symfony,swiftmailer,Symfony,Swiftmailer,我在用symfony2和swiftmailer发送电子邮件时遇到问题。对于如何调试这个问题,我也有点不知所措。下面是代码。首先,我要创建一个要显示的表单。在提交(请求->方法==post)时,我尝试发送电子邮件。我没有收到任何错误,它正在把我带到感谢页面,但是,我没有收到任何电子邮件。我在prod和dev上进行了测试。在dev中,我在提交后打开了探查器,它显示了0封电子邮件。感谢您的帮助!谢谢 public function contactAction(Request $request) {

我在用symfony2和swiftmailer发送电子邮件时遇到问题。对于如何调试这个问题,我也有点不知所措。下面是代码。首先,我要创建一个要显示的表单。在提交(请求->方法==post)时,我尝试发送电子邮件。我没有收到任何错误,它正在把我带到感谢页面,但是,我没有收到任何电子邮件。我在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('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());
}

我经常在config_dev.yml中设置以下配置,以防止在测试期间发送邮件,也许您也这样做了,但忘记了

如果这在config_dev.yml中,请将其设置为false:

swiftmailer:
  disable_delivery:  true

您可以在这里找到有关如何使用symfony2发送电子邮件的整个过程。我刚测试了一下,它似乎很好用


您可以设置邮件后台处理。如果是需要运行的情况:

php app/console swiftmailer:spool:send
发送假脱机电子邮件


查看更多信息。

您可以发布parameters.yml吗

还要确保禁用假脱机,以便可以立即发送电子邮件。如果您在Swiftmailer配置下有假脱机条目,请将其删除,例如:

swiftmailer: transport: %mailer_transport% host: %mailer_host% username: %mailer_user% password: %mailer_password% spool: { type: memory } 速递员: 传输:%mailer\u传输% 主机:%mailer\u主机% 用户名:%mailer\u用户% 密码:%mailer\u密码% 假脱机:{type:memory} 应该是:

swiftmailer: transport: %mailer_transport% host: %mailer_host% username: %mailer_user% password: %mailer_password% 速递员: 传输:%mailer\u传输% 主机:%mailer\u主机% 用户名:%mailer\u用户% 密码:%mailer\u密码%
我知道你在收到ovh、siwftmailer和fosUserBundle的电子邮件时遇到问题

请考虑在您的配置文件中添加这一点。YLL

fos_user:
    from_email:
            address:        noreply@yourdomain.com
            sender_name:    yourname
# Swiftmailer Configuration
swiftmailer:
    transport:  smtp
    encryption: ssl
    auth_mode:  login
    host:       smtp.xx.eu
    username:   username
    password:   password 
如果您不这样做,fos用户包将发送电子邮件noreply@exemple.comOVH将此标记为垃圾邮件

来源:

config.yml

fos_user:
    from_email:
            address:        noreply@yourdomain.com
            sender_name:    yourname
# 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);


除了上述解决方案,我建议您从使用swiftmailer代码的函数中删除
die
exit
。如果代码正确,这将解决您的问题。

如果您希望探查器显示已发送的邮件,则必须删除重定向。我尚未设置邮件服务器。。。关于这方面的服务器/文档有什么建议吗?我正在运行ubuntu。@ShawnNorthrop如果没有配置邮件服务器,它将如何发送电子邮件?最简单的建议:将swiftmail配置为通过Gmail服务器发送电子邮件。电子邮件应该通过godaddy发送。我已经为godaddy smtp设置了此文件。我不确定我是否需要一个本地邮件服务器在这上面?我的问题的一部分是我没有看到任何日志或方法来调试它。我不确定与godaddy的连接/请求是否曾经进行过,我检查过,并且没有禁用。这也会发生在productionAnother long shot上,但我的Sf2日志中通常没有显示错误,这些日志显示在/var/log/apache2/error.log中,看到了吗?(抱歉,正如我所说的,很长时间)删除重定向后,我看到一封电子邮件正在通过探查器发送。。不过我还是没有收到。apache、php或symfony Logssory m8中没有任何内容,因此没有任何线索。也许可以尝试改为gmail发送而不是smtp,这样你至少可以看看是否一切都是这样。如果有,请检查两端的smtp设置,您和GoDaddy。很好的教程,Gmail对我有效,但我无法使用默认的localhost配置。它在我的本地服务器上有效,但在远程服务器上无效(联机),我该怎么办???检查远程服务器参数以获取swiftmailer。也许您有用于开发和生产环境的自定义参数。谢谢您的参考。太糟糕了,Symfony网站上描述的事情只有20%的时间有效。谢谢,我看不到错误(无法与主机建立连接)将quick&Dirt
die()
替换为
return new Response()
对我有效。谢谢谢谢你节省了我的时间