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

时间:2016-07-27 07:57:36

标签: php email outlook pear-mail

我尝试使用PHP Pear发送电子邮件。当我使用Gmail使用此设置发送电子邮件时,它可以正常运行:

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

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

我尝试使用具有此设置的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,响应:)]

我检查了Microsoft的official article有关其SMTP设置的信息。所以我认为我有正确的设置,但它无法正常工作。

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

1 个答案:

答案 0 :(得分:-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),但稍后因auth失败而失败。使用5.2.16 PHPMailer我成功发送邮件,但标题让我担心垃圾邮件拒绝率(没有DKIM,SPF是我的AWS实体的软件故障,警告-f,以及其他)。而且,电子邮件确实最终出现在我的其他测试收件人@ outlook.com的垃圾文件夹中。但我离题了。