我在本地机器上设置了一个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希望在标头和内容之间有一条新的双线。同样,我认为谷歌在猜测那里发生了什么方面做得很好!