2014-09-27 1 views
2

Я занят написанием последнего бита механизма ретрансляции SMTP. По сути, люди отправляют почту на этот SMTP-адрес, он передается в файлы, анализируется, а затем верхние и нижние колонтитулы добавляются в тело. Моя проблема в том, что я не уверен, что мой способ изменения почты будет работать для всех случаев. В принципе, если у меня есть это:Самый безопасный способ добавить заголовок и нижний колонтитул к электронной почте?

Return-path: <[email protected]> 
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 <[email protected]>) 
    id XXXX-XXXX-67 
    for [email protected]; 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: <[email protected]> 
From: [email protected] 
To: [email protected] 
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 заключается в том, что я ограничен тем, что может анализировать парсер.

Итак, что является самым безопасным способом передачи сообщений электронной почты, как я описал?

ответ

2

Простое добавление или добавление чего-либо к телу сообщения не будет работать. Это не будет работать, потому что сообщение может быть выполнено с помощью multipart (например, с вложениями) или закодировано (например, base64). PHP Mime Mail Parser, похоже, способен обрабатывать эти случаи, но у него нет способа сохранить измененное сообщение.

Я бы порекомендовал использовать некоторую электронную парсинговую библиотеку, которая может писать сообщения, а не просто читать. Например, стандартная библиотека Python имеет пакет email, который может делать то, что вам нужно. Однако вам нужно будет проверить, является ли сообщение многочастным, и, если это так, добавьте заголовок и нижний колонтитул в нужную часть (то есть к фактическому содержимому, а не к изображению или вложению). Вам также нужно будет проверить, является ли сообщение обычным текстом или HTML, а ваш верхний и нижний колонтитулы отформатированы соответствующим образом.