是否可以将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)]
到目前为止和我的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);
答案 0 :(得分:5)
有几点:
pod####.outlook.com
的电子邮件服务器名称是旧的
标准,虽然他们仍然暂时工作,但已经
被通用smtp.office365.com
取代。只是谷歌
" office365 smtp设置"你会看到很好的文件。port 587
来自第1项。正如S. Varun所述。虽然我没有审核你的 代码详细我怀疑你的问题是缺乏SSL传输 被装载。我将描述的修复程序基于FreeBSD,但是你 应该能够改变它在Windows上工作(将有助于了解 你的环境):
创建一个PHP文件,其中包含从PHP stream_get_transports()
documentation借来的以下代码:
$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)
现在尝试使用您的电子邮件发送代码,它应该可以使用!
希望这有帮助!
答案 1 :(得分:1)
假设您已经安装了梨(如果您不想谷歌如何为您的特定操作系统安装),这段代码在Ubuntu 12.04 LTS中非常适合我。
如果你没有找到"" Mail.php"那么您需要更改pear安装目录所在的位置。
从命令行发出此信息以查找out - > pear config-get php_dir。一旦你知道在php.ini中编辑你的include_path。
不要在linux中忘记使用:如果你需要分开多个包含并使用一个;如果你使用Windows PHP服务器分开多个包含。例如for linux:include_path =&#34;。:/ usr / share / php5:/ usr / share / php&#34;<?php
require_once('/usr/share/php/Mail.php');
$from = "John Smith <john@youroffice365emailhere.com>";
$to = "Nancy Smith <Nancy@youroffice365emailhere.com>";
$bcc = '';
$subject = "Hi!";
$body = "Hi,\n\nLooks like it worked.";
$host = 'smtp.office365.com';
$port = '587';
$username = 'Your Auth Username here.'; ##e.g. test@yourdomain.com you do not need on.microsoft.com or anything here. Use your real email address you use for authentication.
$password = 'Your Auth Password for the email address above';
$headers = array(
'Port' => $port,
'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);
echo "test";
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>