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,但它没有收到任何内容。如果这是(唯一的)问题,那么你很幸运,谷歌试图为你进行第二次猜测!

还有:

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

带有:

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

SMTP希望在标头和内容之间有一条新的双线。同样,我认为谷歌在猜测那里发生了什么方面做得很好!