2

我正在尝试使用 PHP Pear 发送电子邮件。当我使用具有以下设置的 Gmail 发送电子邮件时,它可以工作:

$smtp = Mail::factory('smtp', array(
    'host' => 'ssl://smtp.gmail.com',
    'port' => '465',
    'auth' => true,
    'username' => 'username@gmail.com',
    'password' => 'password!2016'
));

但在完成这项工作之前,我必须“允许不太安全的应用程序”访问我的帐户,您可以在此处阅读如何操作。

我尝试使用具有以下设置的 Outlook 帐户:

$smtp = Mail::factory('smtp', array(
    'host' => 'tls://smtp.office365.com',
    'port' => '587',
    'auth' => true,
    'username' => 'email@domain.org',
    'password' => 'greatPasswordComesWithGreatResponsibilities'
));

但我收到此错误:

无法连接到 ssl://smtp.office365.com:587 [SMTP:无法连接套接字:fsockopen():无法连接到 ssl://smtp.office365.com:587(未知错误)(代码:- 1、回复:)]

我查看了微软关于他们的 SMTP 设置的官方文章。所以我认为我有正确的设置,但它不起作用。

我错过了什么吗?为什么我会收到此错误?在允许第三方应用程序发送电子邮件之前,我是否必须在我的 Outlook 帐户中配置一个设置,例如 Gmail?

4

1 回答 1

-1

这可能无济于事,但您的帖子标题只是说 Outlook 帐户,但链接和 smtp 设置指的是 Office365 for Business 帐户。我无法说明企业帐户,但如果您实际上拥有个人 Outlook.com 帐户,则设置会有所不同。而且,您必须更改帐户上的一个选项才能启用 pop/smtp 访问,就像使用 gmail 所做的那样。

微软官方文章是: https: //support.office.com/en-us/article/Add-your-Outlook-com-account-to-another-mail-app-73f3b178-0009-41ae-aab1-87b80fa94970? ui=en-US&rs=en-US&ad=US&fromAR=1

但是,总结是 smtp 服务器是 smtp-mail.outlook.com,要在 Outlook 帐户中启用 pop/smtp,请查找选项 > 管理您的帐户 > 使用 POP 连接设备和应用程序。

更新: 如果您实际使用的是企业帐户,您应该查看声称可以正常工作的这篇文章:https ://stackoverflow.com/a/26004690/2891120

他的代码中的关键项是他在主机名前没有“tls://”。我有一个消费者 Outlook 帐户,并以 tls:// 前缀向您发送类似的套接字故障。如果我删除该前缀,我会走得更远(在工厂中设置 debug=true)但稍后会因身份验证失败而失败。改用 5.2.16 PHPMailer,我成功发送了邮件,但标题让我担心垃圾邮件拒绝率(没有 DKIM,SPF 对我的 AWS 实体来说是软故障,警告 -f 等)。而且,这封电子邮件确实最终进入了我的另一个测试收件人@outlook.com 的垃圾文件夹中。但我离题了。

于 2016-11-16T17:50:29.570 回答