是否可以将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上工作(有助于了解您的环境):
创建一个PHP文件,其中包含从PHP stream_get_transports()文档中借用的以下代码:
$xportlist = stream_get_transports();
print_r($xportlist);
当您在PHP中执行此文件(需要PHP的命令行界面)时,如果您没有看到任何SSL提及,那么这是您的问题 - 没有安全的传输
安装PHP SSL模块(我在FreeBSD中使用端口,所以我security/php55-openssl去做make install clean)
重新启动Apache以确保加载新模块(理想情况下是正常重启).
现在重新运行你的get_transports PHP代码,你应该看到SSL列出了(除了原始协议,我还有SSL,SSLv3,SSLv2,TLS)
现在试试你的电子邮件发送代码,它应该工作!
希望这可以帮助!