2

我正忙于编写 SMTP 中继引擎的最后一点。基本上,人们将邮件发送到这个 SMTP 地址,然后通过管道传输到文件,进行分析,然后将页眉和页脚添加到正文中。我的问题是,我不确定我更改邮件的方式是否适用于所有情况。基本上,如果我有这个:

Return-path: <XXXX@YYYY>
Envelope-to: system-filter
Delivery-date: Thu, 25 Sep 2014 12:43:53 +0200
Received: from localhost ([127.0.0.1]:XXXX helo=XXXX.XXXX.com)
    by XXXX.XXXX.com with XXXX(XXXX-XXXX-XXXX-XXXX:XXXX)
    (Exim XXXX)
    (envelope-from <XXXX@XXXX.XXXX>)
    id XXXX-XXXX-67
    for XXXX.XXXX@XXXX.com; Thu, 25 Sep 2014 12:43:52 +0200
Received: from XXXX.XXXX.XXXX.XXXX ([197.87.204.210]) by XXXX.XXXX.com
 (Horde Framework) with HTTP; Thu, 25 Sep 2014 10:43:50 +0000
Date: Thu, 25 Sep 2014 10:43:50 +0000
Message-ID: <XXXX.Horde.XXXX@XXXX.XXXX.com>
From: XXXX@XXXX.XXXX
To: XXXX.XXXX@XXXX.com
Subject: This is the subject
User-Agent: Internet Messaging Program (IMP) H5 (XXXX)
Content-Type: text/plain; charset=UTF-8; format=flowed; DelSp=Yes
MIME-Version: 1.0
Content-Disposition: inline
X-OutGoing-Spam-Status: No, score=-2.9

And this is the message.

想法是: 1. 只需找到第一个空白行并将页眉放在那里,然后将页脚附加到末尾。2. 使用PHP Mime Mail Parser更改正文

1 的问题是我认为可能有不同的格式不遵循正常布局。2 的问题是,我仅限于邮件解析器可以解析的任何内容。

那么,正如我所描述的,最安全的转发电子邮件的方法是什么?

4

1 回答 1

2

仅在消息正文中添加或附加某些内容是行不通的。它不会起作用,因为消息可以是多部分的(例如带有附件)或编码的(例如 base64)。PHP Mime Mail Parser 似乎能够处理这些情况,但它没有保存修改后的消息的方法。

我建议使用一些可以编写消息的电子邮件解析库,而不仅仅是阅读。例如,Python 标准库有email包可以做你需要的。但是,您必须检查消息是否是多部分的,如果是,则将页眉和页脚添加到右侧部分(即添加到实际内容而不是图像或附件)。您还需要检查邮件是纯文本还是 HTML,并正确格式化页眉和页脚。

于 2014-09-30T11:35:34.433 回答