通过PHP Pear使用Outlook发送电子邮件


Send Email using Outlook through PHP Pear

我正在尝试使用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?

这可能没有帮助,但你的帖子标题只是说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-美国&rs=en-US&ad=美国&fromAR=1

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

更新:如果你真的在使用商业账户,你应该查看这篇声称可以使用的帖子:https://stackoverflow.com/a/26004690/2891120

他的代码中的关键项是主机名前面没有"tls://"。我有一个consumer outlook帐户,收到了一个类似的带有tls://前缀的套接字故障。如果我删除了这个前缀,我会走得更远(在工厂中设置debug=true),但稍后会以身份验证失败而失败。使用5.2.16 PHPMailer,我成功地发送了邮件,但邮件头让我担心垃圾邮件拒绝率(没有DKIM,SPF对我的AWS实体来说是软故障,警告-f和其他)。而且,这封电子邮件最终确实被放在了我的另一个测试收件人@outlook.com的垃圾文件夹中。但我跑题了。