在Symfony 4上结合使用Swift Mailer和smtp

时间:2019-05-22 13:06:10

标签: symfony smtp symfony4 swiftmailer

我在Symfony 4上安装了Swift Mailer,以向新用户发送注册电子邮件。我注意到,当我使用我的Gmail帐户发送电子邮件时,它可以正常工作,但是当我使用Outlook时,它却无法工作。

因此,在读取documentation之后,我像这样在.env文件中设置MAILER_URL

>  MAILER_URL=smtp://localhost:25?encryption=ssl&auth_mode=login&username=*****%40live.com&password=******

我也使用过:

>  MAILER_URL=smtp://smtp-mail.outlook.com:25/encryption=ssl&auth_mode=login&username=*******%40live.com&password=********

我已将端口从25更改为587更改为465,但这些端口均无效。

这是我给邮件程序打电话的方法:

public function sendMail($subject, $fromEmail, $toEmail, $emailTemplate, $argumentsArray, $emailType, $imgPath)
{
    $message = $this->setBasicEmailMessage($subject, $fromEmail, $emailTemplate, $argumentsArray, $emailType, $imgPath);
    $message->setTo($toEmail);
    $this->mailer->send($message);
}


private function setBasicEmailMessage($subject, $fromEmail, $emailTemplate, $argumentsArray, $emailType, $imgPath)
{
    $message = (new \Swift_Message($subject))->setFrom($fromEmail);
    $img = $message->embed(\Swift_Image::fromPath($imgPath));
    $argumentsArray['img'] = $img;
    $message->setBody(
        $this->templating->render(
            $emailTemplate,
            $argumentsArray
        ),
        $emailType
    );

    return $message;
}

这是我的swiftmailer.yaml:

swiftmailer:
    url: '%env(MAILER_URL)%'
    spool: { type: 'memory' }

代码不会引发异常,但是电子邮件永远不会将其发送给用户。

有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:0)

在try and catch块中放置send函数,您肯定会得到任何线索:

try {
   $this->mailer->send($message);

 } catch (\Swift_RfcComplianceException $e) {

            echo "\nException :: " . $e->getMessage();
        }