我想通过我的 php web 应用程序发送电子邮件,我总是通过 phpmailer(与 Composer 安装的 php 库)和 Outlook 帐户来完成。但他们已经更改了身份验证类型(https://answers.microsoft.com/en-us/outlook_com/forum/all/error-535-57139-authentication-unsuccessful-basic/6a18c08d-6163-4a44-8e09-33bdecfb1d0f )。但据我了解,phpmailer 没有 Outlook 等服务所需的最新身份验证类型。是否有另一个库可以或者我可以修改 phpmailer 的设置以允许当前的身份验证类型。 (其他电子邮件提供商也不再工作:我尝试过 Outlook 和 yahoo。gmail 确实支持它,但直到 2025 年 1 月为止,我想要一个长期解决方案)。
有解决办法吗?
这是我尝试过的代码:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require("vendor/autoload.php");
function sendmail()
{
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp-mail.outlook.com';
$mail->SMTPAuth = true;
$mail->Username = 'email';
$mail->Password = 'supersecurepassword';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->SMTPDebug = 2;
$mail->setFrom('email', 'name');
$mail->addAddress('email');
$mail->isHTML(true);
$mail->Subject = 'Test Email';
$mail->Body = '<h1>Welcome to Our Service</h1><p>Enjoy your experience!</p>';
$mail->send();
echo "Message sent successfully!";
} catch (Exception $e) {
echo "Message could not be sent. Error: {$mail->ErrorInfo}";
}
}
这是我运行此代码时的错误:
2024-12-02 21:27:41 SERVER -> CLIENT: 535 5.7.139 Authentication unsuccessful, basic authentication is disabled. [AM0PR02CA0198.eurprd02.prod.outlook.com 2024-12-02T21:27:41.476Z 08DD12F68033AE4D]
2024-12-02 21:27:41 SMTP ERROR: Password command failed: 535 5.7.139 Authentication unsuccessful, basic authentication is disabled. [AM0PR02CA0198.eurprd02.prod.outlook.com 2024-12-02T21:27:41.476Z 08DD12F68033AE4D]
SMTP Error: Could not authenticate.
2024-12-02 21:27:41 CLIENT -> SERVER: QUIT
2024-12-02 21:27:41 SERVER -> CLIENT: 221 2.0.0 Service closing transmission channel
SMTP Error: Could not authenticate.
Message could not be sent. Error: SMTP Error: Could not authenticate.
问题在于,大多数主要电子邮件提供商都或多或少地完全删除了经过身份验证的 SMTP,并转向各种专有的消息提交方法。例如:MS 现在希望您使用他们的 Graph API 发送电子邮件,这将要求您使用完全不同的库,例如 msgraph SDK。
或者,您可以仅为此一个应用程序配置一个特殊的邮件连接器。
还有“完全不要接触微软,只使用第三方邮件提供商”选项。