带有 Exchange 的 Symfony Mailer

问题描述 投票:0回答:1

我在将 Symfony Mailer 与 Exchange Server 2016 结合使用时遇到了一些困难。

当我尝试时,我发现 Swift Mailer 具有原生 NTML 支持,但它给了我这个我无法克服的错误消息。

PHP 致命错误:未捕获 Swift_TransportException:无法使用 1 个可能的身份验证器使用用户名“域\用户名”在 SMTP 服务器上进行身份验证。身份验证器 NTLM 返回预期响应代码 235,但收到代码“535”,并显示消息“535 5.7.3 身份验证失败

然后我在 Swift 网站上看到了这条消息:

请尽早转移到 Symfony Mailer。 Symfony Mailer 是 Swift Mailer 的下一代发展。它提供相同的功能,支持现代 PHP 代码并支持第三方提供商。

我安装了 Symfony Mailer,但注意到它不支持 NTML。有人将

NtmlAuthenticator.php
从 Swift Mailer 移植到 Symfony Mailer。我尝试过实现这个,但无法弄清楚这个 NtmlAuthenticator 需要如何实现。

它给了我

PHP 致命错误:未捕获错误:在 /var/www/cfs-tools/App/mailtest.php:15 中找不到类“NtlmAuthenticator”

这是我的代码:

<?php
require '../vendor/autoload.php';
use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\Part\DataPart;
use Symfony\Component\Mime\Part\File;
use Symfony\Component\Mailer\Transport\Smtp\Auth\AuthenticatorInterface;

$transport = (new Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport
('smtp.testdomain.com', 25))
->setUsername('testdomain\testemail')
->setPassword('password')
->setAutoTls(false);

$transport->setAuthenticators([new NtlmAuthenticator()]);

$mailer = new Mailer($transport);
$email = (new Email())
->from('[email protected]')
->to("[email protected]")
->subject('Test Mail Subject')
->html('<p>Test Email Symfony</p>');
$mailer->send($email);

我的设置: PHP 8.2.13

Exchange 服务器 2016

symfony/邮件程序7.2.0

symfony exchange-server symfony-mailer
1个回答
0
投票

您没有导入

NtlmAuthenticator()
。 我不知道它的完整路径,您应该在包的文档中找到它,或者您可以在供应商目录中的composer.json中检查它。

应该看起来像

use Vendor\NtlmAuthenticator;\

© www.soinside.com 2019 - 2024. All rights reserved.