PHP smtp.office365.com电子邮件

bDi*_*Dir 2 php

是否可以将PHP应用程序邮件与Office365集成?

我试过但发现了这个错误:

authentication failure [SMTP: SMTP server does not support authentication (code: 250, response: SINPR02CA025.outlook.office365.com Hello [17*.***.***.**] SIZE 78643200 PIPELINING DSN ENHANCEDSTATUSCODES STARTTLS 8BITMIME BINARYMIME CHUNKING)]
Run Code Online (Sandbox Code Playgroud)

和我的PHP代码到目前为止:

$host = "smtp.office365.com";
$username = "me@company.com";
$password = "example";

$headers = array(
    'From'          => $from,
    'To'            => $to,
    'Subject'       => $subject,
    'Content-Type'  => 'text/html; charset=UTF-8'
);

$recipients = $to.", ".$bcc;

$smtp = Mail::factory('smtp',
    array ('host' => $host,
    'auth' => true,
    'username' => $username,
    'password' => $password));

$mail = $smtp->send($recipients, $headers, $body);
Run Code Online (Sandbox Code Playgroud)

小智 5

几点:

  • 表单的电子邮件服务器名称pod####.outlook.com是旧标准,虽然它们暂时仍然有效,但已被通用名称取代smtp.office365.com.只需谷歌"office365 smtp设置",你就会看到很好的文档.
  • 您需要port 587根据项目1中的文档指定.正如S. Varun所述.
  • 虽然我没有详细检查您的代码,但我怀疑您的问题是缺少加载的SSL传输.我将描述的修复程序基于FreeBSD,但您应该可以将其更改为在Windows上工作(有助于了解您的环境):

    1. 创建一个PHP文件,其中包含从PHP stream_get_transports()文档中借用的以下代码:

      $xportlist = stream_get_transports(); print_r($xportlist);

    2. 当您在PHP中执行此文件(需要PHP的命令行界面)时,如果您没有看到任何SSL提及,那么这是您的问题 - 没有安全的传输

    3. 安装PHP SSL模块(我在FreeBSD中使用端口,所以我security/php55-openssl去做make install clean)

    4. 重新启动Apache以确保加载新模块(理想情况下是正常重启).

    5. 现在重新运行你的get_transports PHP代码,你应该看到SSL列出了(除了原始协议,我还有SSL,SSLv3,SSLv2,TLS)

    6. 现在试试你的电子邮件发送代码,它应该工作!

希望这可以帮助!