使用php从/usr/bin/mail读取电子邮件

使用php从/usr/bin/mail读取电子邮件,php,linux,email,Php,Linux,Email,出于简单的测试目的,我在linux机器上本地发送邮件。我只需在命令行上键入mail即可查看收到的邮件。我现在想从php中获取一组收到的电子邮件。有人知道我怎么做吗 欢迎所有提示 [编辑] 解释。当我发送电子邮件到'kramer65@localhost'在php中,我可以通过运行mail来查看电子邮件,它指的是/usr/bin/mail。这个的输出是这样的: Mail version 8.1.2 01/15/2001. Type ? for help. "/var/mail/kramer65":

出于简单的测试目的,我在linux机器上本地发送邮件。我只需在命令行上键入
mail
即可查看收到的邮件。我现在想从php中获取一组收到的电子邮件。有人知道我怎么做吗

欢迎所有提示

[编辑] 解释。当我发送电子邮件到'kramer65@localhost'在php中,我可以通过运行
mail
来查看电子邮件,它指的是/usr/bin/mail。这个的输出是这样的:

Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/kramer65": 1 message 1 new
>N  1 kramer65@php0        Fri Apr 25 11:49   16/501   THIS IS THE SUBJECT
& 
Message 1:
From kramer65@php0  Fri Apr 25 11:49:25 2014
X-Original-To: kramer65@localhost
To: kramer65@localhost
Subject: THIS IS THE SUBJECT
X-PHP-Originating-Script: 1007:php shell code
Date: Fri, 25 Apr 2014 11:49:25 +0200 (CEST)
From: kramer65@php0 (kramer65)

THIS IS THE BODY OF THE MESSAGE
$directory = 'path/to/your/mails/';
$files = glob($directory.'*.txt');
$filescount = count($files);
$mailArray = array();
for ($i = 0; $i < $filescount; $i++)
{
  $mailString = file_get_contents('mail'.$i);
  $mailArray[] = $mailString;
}

我现在想用php获取这些电子邮件的数组输出。有什么办法吗?

您可以使用file_get_contents(“文件名”)将收到的电子邮件文件加载到字符串中; 如果你想创建一个多维数组,那么在收到的电子邮件文件中必须有一个特定的结构,以便在你的php代码中分离电子邮件发送者、标题、文本等

若你们不能(或不想)分离发件人、标题、文本等,你们仍然可以制作一个完整邮件的数组

如果将每封电子邮件保存在一个单独的文件中,它将如下所示:

Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/kramer65": 1 message 1 new
>N  1 kramer65@php0        Fri Apr 25 11:49   16/501   THIS IS THE SUBJECT
& 
Message 1:
From kramer65@php0  Fri Apr 25 11:49:25 2014
X-Original-To: kramer65@localhost
To: kramer65@localhost
Subject: THIS IS THE SUBJECT
X-PHP-Originating-Script: 1007:php shell code
Date: Fri, 25 Apr 2014 11:49:25 +0200 (CEST)
From: kramer65@php0 (kramer65)

THIS IS THE BODY OF THE MESSAGE
$directory = 'path/to/your/mails/';
$files = glob($directory.'*.txt');
$filescount = count($files);
$mailArray = array();
for ($i = 0; $i < $filescount; $i++)
{
  $mailString = file_get_contents('mail'.$i);
  $mailArray[] = $mailString;
}
$directory='path/to/your/mails/';
$files=glob($directory.'*.txt');
$filescont=count($files);
$mailArray=array();
对于($i=0;$i<$filescont;$i++)
{
$mailString=file\u get\u contents('mail'.$i);
$mailArray[]=$mailString;
}
在本例中,我假定邮件的文件类型为.txt 此外,邮件的文件名必须是mail0、mail1、mail2等


如果我完全误解了这个问题,我很抱歉;)

Unix系统上的邮件假脱机是一个简单的文本文件,称为Berkeley格式

要修改它,您需要使用与
邮件
程序相同的锁定机制(以便在修改文件时文件不会被其他程序更改),但要仅读取文件,可以打开,一次读取一行,在看到序列
时启动新消息(文件开始,或换行)从
,完成后关闭

(我不熟悉PHP,但我想你应该能够找到一个这样做的库。如果你幸运的话,它是安全的,没有bug。)


该套件包含一个名为
formail
的实用程序,它可以在
mbox
文件中的每条消息上生成一个新程序(例如您的PHP脚本)。还有另一个实用工具
lockfile
,它知道如何正确锁定邮箱文件。

怎么样,或者感谢您的建议。虽然这不是我问题的答案,但它已经有所帮助了。我的问题更多的是关于读取
邮件的结果。我在这个问题上补充了一些信息。哦,好吧,在这方面,我一点经验都没有。不能再帮你了,sry