我正在编写一个脚本来处理传入的电子邮件并将内容保存到数据库中。我使用一些PEAR方法来处理传入的消息,并解析出电子邮件的from,to,subj和body。它似乎在大多数情况下都有效,但是有一些关于从Microsoft Entourage(Mac的邮件客户端)发送的电子邮件,它打破了电子邮件正文的提取。奇怪的是,使用Entourage从我的学校帐户发送的电子邮件可以完美地处理所有内容,使用gmail的网络客户端从我的Gmail帐户发送的电子邮件可以完美地处理所有内容,但是使用Entourage从我的Gmail帐户发送的电子邮件只会解析来自,和subj准确。电子邮件正文丢失......
编辑:结果发现iPhone邮件客户端的Gmail邮件存在问题。这是一个MIME与非MIME问题吗?
请查看我的代码并分享您可能知道的任何内容。
谢谢!
#!/usr/local/bin/php -q
<?php
//the following includes needed full path included b/c of local install of PEAR
INCLUDE('pear/share/pear/Mail.php');
INCLUDE('pear/share/pear/Mail/mime.php');
REQUIRE_ONCE('pear/share/pear/Mail/mimeDecode.php');
$fd = FOPEN("php://stdin", "r");
$email = "";
WHILE (!FEOF($fd)) {
$email .= FREAD($fd, 1024);
}
FCLOSE($fd);
$params['include_bodies'] = TRUE;
$params['decode_bodies'] = TRUE;
$params['decode_headers'] = TRUE;
$message=NEW Mail_mimeDecode($email);
$mailObj=$message->decode($params);
// Who is it from
$from=$mailObj->headers['from'];
//who is it to
$to=$mailObj->headers['to'];
// Get Subject
$subj=$mailObj->headers['subject'];
// Get Message Body
$body=$mailObj->parts[0]->body;
$gather="From:$from\nSubject:$subj\nBody:$body";
从这里开始,$ from,$ to和$ subj变量都得到了适当的设置。在Entourage发送的电子邮件的情况下,$ body是空的......