如何从Pipe到程序获取电子邮件正文

| 我正在向程序发送电子邮件并运行一些代码。 ** 我知道如何获取\“发件人:\”和\“主题:\”,但是如何仅获取电子邮件的正文? **
#!/usr/bin/php -q
<?

$fd = fopen(\"php://stdin\", \"r\");
while (!feof($fd)) {
  $email .= fread($fd, 1024);
}
fclose($fd);

$lines = explode(\"\\n\", $email);

for ($i=0; $i < count($lines); $i++) 
{


    // look out for special headers
    if (preg_match(\"/Subject:/\", $lines[$i], $matches)) 
        {

    list($One,$Subject) = explode(\"Subject:\", $lines[$i]);    
    list($Subject,$Gone) = explode(\"<\", $Subject);  


        }
等等...如何获取电子邮件的正文内容?     
已邀请:
基本上,您想要标题的结尾,并知道标题是否是多部分的,因此您可以获取电子邮件的正确部分。 这里是一些信息: 在PHP中解析原始电子邮件 表示第一个双换行符应该是电子邮件正文的开头。 该页面可能会给您其他一些想法(请参见下面的脚本): http://thedrupalblog.com/configuring-server-parse-email-php-script
#!/usr/bin/php
<?php

// fetch data from stdin
$data = file_get_contents(\"php://stdin\");

// extract the body
// NOTE: a properly formatted email\'s first empty line defines the separation between the headers and the message body
list($data, $body) = explode(\"\\n\\n\", $data, 2);

// explode on new line
$data = explode(\"\\n\", $data);

// define a variable map of known headers
$patterns = array(
  \'Return-Path\',
  \'X-Original-To\',
  \'Delivered-To\',
  \'Received\',
  \'To\',
  \'Message-Id\',
  \'Date\',
  \'From\',
  \'Subject\',
);

// define a variable to hold parsed headers
$headers = array();

// loop through data
foreach ($data as $data_line) {

  // for each line, assume a match does not exist yet
  $pattern_match_exists = false;

  // check for lines that start with white space
  // NOTE: if a line starts with a white space, it signifies a continuation of the previous header
  if ((substr($data_line,0,1)==\' \' || substr($data_line,0,1)==\"\\t\") && $last_match) {

    // append to last header
    $headers[$last_match][] = $data_line;
    continue;

  }

  // loop through patterns
  foreach ($patterns as $key => $pattern) {

    // create preg regex
    $preg_pattern = \'/^\' . $pattern .\': (.*)$/\';

    // execute preg
    preg_match($preg_pattern, $data_line, $matches);

    // check if preg matches exist
    if (count($matches)) {

      $headers[$pattern][] = $matches[1];
      $pattern_match_exists = true;
      $last_match = $pattern;

    }

  }

  // check if a pattern did not match for this line
  if (!$pattern_match_exists) {
    $headers[\'UNMATCHED\'][] = $data_line;
  }

}

?>
编辑 这是一个名为MailParse的PHP扩展: http://pecl.php.net/package/mailparse 有人围绕它建立了一个名为MimeMailParse的类: http://code.google.com/p/php-mime-mail-parser/ 这是讨论如何使用它的博客条目: http://www.bucabay.com/web-development/a-php-mime-mail-parser-using-mailparse-extension/     

要回复问题请先登录注册