SwiftMailer不在Symfony 2.5中发送电子邮件

Bai*_*aig 1 php email swiftmailer symfony

在花了两天试图让它工作后,我终于决定在这里问.我试图在用户提交联系表单后生成一封电子邮件,在阅读Symfony 网站上的文档和无数其他关于stackoverflow和google的文章后,我无法让它工作.看看它看起来应该是非常简单的指令,但没有一个解决方案正在发挥作用.我尝试通过Gmail和我们公司的SMTP发送电子邮件,但两者都无效

这是我的最新消息 parameters.yml

swiftmailer:
   transport:            smtp
   username:             username (confirmed that i am entering it right)
   password:             password (confirmed that i am entering it right)
   host:                 mail.domain.com
   port:                 26
   auth_mode:            login 
Run Code Online (Sandbox Code Playgroud)

上面的设置没有给出任何错误,它只是提交表单并显示成功消息但没有收到邮件

我甚至尝试过使用Gmail之类的其他几个组合,但这会返回用户身份验证错误,我一遍又一遍地确定我输入正确的登录详细信息并且100%确定它们是正确的,因为通过浏览器我可以登录.

config.yml:

swiftmailer:
    transport: %mailer_transport%
    encryption: %mailer_encryption%
    auth_mode:  %mailer_auth_mode%
    host:      %mailer_host%
    username:  %mailer_username%
    password:  %mailer_password%
    spool:     { type: memory }
Run Code Online (Sandbox Code Playgroud)

parameters.yml:

mailer_transport:  smtp
mailer_encryption: ssl
mailer_auth_mode:  login
mailer_host:       smtp.gmail.com
mailer_username: myusername@gmail.com
mailer_password: mypassword
Run Code Online (Sandbox Code Playgroud)

这就是我的控制器生成电子邮件的样子

public function indexAction(Request $request)
    {
        $enquiry = new Enquiry();
        $form = $this->createForm(new EnquiryType(), $enquiry);

        $form->handleRequest($request);

        if ($form->isValid()) {
            $message = \Swift_Message::newInstance()
                ->setSubject('Contact enquiry')
                ->setFrom('username@domain.com')
                ->setTo('username@domain.com')
                ->setBody(
                    $this->renderView('ContactBundle:Default:contactEmail.txt.twig', array('enquiry' => $enquiry))
                );
            //print_r($message);
            $this->get('mailer')->send($message);
            $this->get('session')->getFlashBag()->add(
                'notice',
                'Your contact enquiry was successfully sent. Thank you!'
            );

            return $this->redirect($this->generateUrl('contact_form'));
        }

        return $this->render(
            'ContactBundle:Default:contact.html.twig',
            array(
                'form' => $form->createView()
            )
        );

    }
Run Code Online (Sandbox Code Playgroud)

如果我能在这里得到一些帮助,我将非常感激,因为我现在完全无能为力.

Bai*_*aig 6

我让它在基于公司的SMTP和Gmail上工作

对于公司SMTP

config.yml:

swiftmailer:
    transport: %mailer_transport%
    encryption: %mailer_encryption%
    auth_mode:  %mailer_auth_mode%
    host:      %mailer_host%
    username:  %mailer_username%
    password:  %mailer_password%
    spool:     { type: memory }
Run Code Online (Sandbox Code Playgroud)

parameters.yml:

    mailer_transport: smtp
    mailer_host: mail.domain.com
    mailer_user: username@domain.com
    mailer_password: password
Run Code Online (Sandbox Code Playgroud)

对于Gmail config.yml设置保持不变,但parameters.yml进行以下更改

    mailer_transport: gmail
    mailer_host: smtp.gmail.com
    mailer_user: username@gmail.com
    mailer_password: password
Run Code Online (Sandbox Code Playgroud)

然后访问谷歌的这个链接,允许应用程序登录到您的帐户发送邮件.您还可以使用此链接查看任何可疑的登录活动

注意:

在您的控制器中,您告诉发送电子邮件的功能->setFrom('username@gmail.com')应该与生成电子邮件的电子邮件ID匹配,否则您将不会收到电子邮件,我看了这个并浪费了2天.

 $message = \Swift_Message::newInstance()
                ->setSubject('Contact enquiry')
                ->setFrom('username@gmail.com') \\match this to mailer_user in parameters.yml
                ->setTo('username@gmail.com')
                ->setBody(
                    $this->renderView('ContactBundle:Default:contactEmail.txt.twig', array('enquiry' => $enquiry))
                );
Run Code Online (Sandbox Code Playgroud)

这就是我如何工作:)最后,希望这将有助于那里的人卡住.我可以确认这个解决方案在开发和生产服务器上都适用于我.