我尝试使用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?
答案 0 :(得分:-1)
这可能没有帮助,但您的帖子的标题只是说Outlook帐户,但链接和smtp设置是指Office365 for Business帐户。我无法阐明商业帐户,但如果您实际拥有个人Outlook.com帐户,则设置不同。并且,您必须更改帐户上的一个选项以启用pop / smtp访问,就像使用gmail一样。
但是,摘要是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的垃圾文件夹中。但我离题了。