使用PEAR(PHP)向Office 365发送电子邮件

时间:2015-11-27 13:24:08

标签: php email smtp office365 pear

我无法弄清楚为什么我的电子邮件没有发送到我的Office 365帐户。在我的公司迁移到Office 365之前,我们有一个内部邮件服务器,并且发送电子邮件是一件小事。但是,现在我们已经转移到Office 365,发送电子邮件变得非常令人头疼。我想也许我需要设置一个SMTP Relay并在我的PHP代码中指向该服务器,但似乎不是问题。以下是我用于发送测试电子邮件的代码:

$from = "example@example.com";
$to = "test_user@example.com";
$bcc = '';
$subject = "Hi!";
$body = "Hi,\n\nLooks like it worked.";

$host = 'smtp.office365.com';
$port = '587';
$username = 'example@example.com'; 
$password = '**********';

$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>");
}

运行此代码后,出现以下错误:

身份验证失败[SMTP:SMTP服务器不支持身份验证(代码:250,响应:SN1PR19CA0003.outlook.office365.com Hello [68.15.136.46] SIZE 157286400 PIPELINING DSN ENHANCEDSTATUSCODES XXXXXXXA 8BITMIME BINARYMIME XXXXXXXB)]

我已经研究过这个错误并且没有解决我的问题。我想知道它是否与我生成php代码的服务器是开发服务器而不是在现场网站上的事实有关。我想,由于这不是一个实时网站,我需要将它指向一个使用SMTP中继的服务器,以便将其发布到互联网上,但是,就像我说我做这个时没有运气。

非常感谢任何帮助。

提前致谢。

0 个答案:

没有答案