在symfony中使用office365服务器和swiftmailer发送电子邮件

yk9xbfzb  于 2023-10-23  发布在  Swift
关注(0)|答案(5)|浏览(390)

我尝试在symfony中使用swiftmailer和office365服务器注册后发送确认邮件。我已经尝试了我遇到的主机,端口和加密类型的每一种组合。
目前我的.env文件包含这一行:

MAILER_URL=smtp://smtp.office365.com:587?encryption=ssl&auth_mode=login&username="[email protected]"&password="mypassword"
  • 注意事项:我使用““作为我的用户名和密码,因为它们包含特殊字符,我在某个地方读到过,这可能会导致MAILER_URL的问题。

我的swiftmailer.yaml文件包含以下内容:

swiftmailer:
    url: '%env(MAILER_URL)%'
    stream-options:
        ssl:
            allow_self_signed : true
            verify_peer: false

最后,我在控制器中使用以下代码发送电子邮件:

$message = (new \Swift_Message('Referral tool registration'))
            ->setFrom('[email protected]')
            ->setTo('[email protected]')
            ->setBody(
                $this->renderView(
                    'email/notification/user_registered.html.twig',
                    ['firstName' => $user->getFirstName(),
                     'lastName' => $user->getLastName()
                    ]
                    ),
                'text/html'
            );

 $mailer->send($message);

使用当前选择的主机、端口和加密,我得到:"Connection could not be established with host smtp.office365.com [ #0]"

**更新:**当我在telnet smtp.office365.com 587中键入时,我得到了有效的响应,因此我认为问题与网络无关,端口未被阻塞。

jmp7cifd

jmp7cifd1#

您必须使用encryption=tls,urlencode您的USER_NAME和PASSWORD,并且您不应该像以前那样将USER_NAME和PASSWORd用引号括起来。
让我们假设这些凭据并对它们进行urlencode:

USERNAME = `[email protected]` → `email%40domain.tld`
PASSWORD = `pa$$w#rd` → `pa%24%24w%23rd`

使用上述凭据的正确配置如下所示:

MAILER_URL=smtp://smtp.office365.com:587?encryption=tls&auth_mode=login&username=email%40domain.tld&password=pa%24%24w%23rd
pcrecxhr

pcrecxhr2#

我也有类似的问题,我通过登录帐户和更改密码解决了它。
我的情况-帐户是新的,登录后的第一个屏幕是与字段输入:当前密码,新的通行证,重复通行证。
我的环境:

MAILER_DSN=smtp://[email protected]:[email protected]:587
kqhtkvqz

kqhtkvqz3#

试试这个:

MAILER_URL=smtp://smtp.office365.com:587?encryption=tls&username="[email protected]"&password="mypassword"
uqdfh47h

uqdfh47h4#

Symfony 4使用Mailer Component,如果您熟悉,则可以使用env变量,如下所示

# Office 365 Outlook
MAILER_DSN=smtp://[email protected]:[email protected]:587

AND config/packages/mailer.yml

framework:
    mailer:
        dsn: '%env(MAILER_DSN)%'

唯一预装的传输是SMTP。不需要任何其他传输包,不像谷歌邮件或亚马逊邮件。
对我很有效。

polhcujo

polhcujo5#

在Symfony 4这一个它是与我合作

#.env.local
MAILER_URL=smtp://smtp.office365.com:587?encryption=tls&auth_mode=login&username=mymail%40outlook.com&password=MyPassword
# config/packages/mailer.yaml
framework:
    mailer:
        dsn: '%env(MAILER_DSN)%'

相关问题