PHP Gmail 中显示但 Office 365 中不显示的电子邮件正文

PHP Body of email showing in Gmail but not in Office 365

我在本地机器上设置了 SMTP 服务器。

在我的 PHP 脚本中,我将 .txt 文件保存到 SMTP 服务器正在侦听的目录中。当脚本保存到文件时,SMTP 服务器将其发送出去。

我的脚本如下所示:

$content  = "MIME-Version: 1.0" . PHP_EOL;
$content .= "Content-Type: text/html; charset=ISO-8859-1" . PHP_EOL;
$content .= 'From: user@domain.com' ."\r\n";
$content .= 'To: user@domain.com' . "\r\n";
$content .= "CC: susan@example.com\r\n";
$content .= 'Subject: Email test' . "\r\n";

$content .= 'Service Required - '. $_POST['service'] . "\r\n";
$content .= 'Contact - ' . $_POST['contact'] . "\r\n";
$content .= 'About - ' . $_POST['about'] . "\r\n";
$content .= 'Files - File size was to big for upload';

$fp = fopen('C:/inetpub/mailroot/pickup/email.txt',"wb");
fwrite($fp,$content);
fclose($fp);

发送到 Gmail 时会出现正文。

但是当发送到 outlook 时正文是空的。

尝试替换:

$content .= "Content-Type: text/html; charset=ISO-8859-1" . PHP_EOL;

与:

$content .= "Content-Type: text/plain; charset=ISO-8859-1" . PHP_EOL;

不能 100% 确定,但 Outlook 可能没有显示任何内容,因为您告诉它期待 HTML,但它没有收到任何内容。如果这是(唯一的)问题,那么您很幸运,Google 尝试为您进行第二次猜测!

还有:

$content .= 'Subject: Email test' . "\r\n";

有:

//double new line between headers and content
$content .= 'Subject: Email test' . "\r\n\r\n"; 

SMTP 期望 headers 和内容之间有一个双换行符。同样,我认为 Google 已经很好地猜测了那里发生了什么!