簡體   English   中英

如何在procmail轉發的電子郵件中添加一些文本?

[英]How to put some text into procmail forwarded e-mail?

幾天來,我一直在嘗試編寫procmail腳本。

我想轉發消息,並在消息內容中注入一些文本。

我要完成的工作:

  • 有人給我發送電子郵件,主題為“天氣”
  • 電子郵件被轉發到地址“ mymail@somedomain.com”
  • 每個轉發的電子郵件都會在內容中添加一些文本

但是到目前為止,還沒有成功。

.procmail.log ,有一條消息“ procmail:缺少操作”

SHELL=/bin/bash
VERBOSE=off
LOGFILE=/home/test/.procmail.log
LOGDATE_=`/bin/date +%Y-%m-%d`

:0
* ^Subject:.*weather

:0 bfw
| echo "This is injected text" ; echo "" ; cat

:0 c
! mymail@somedomain.com

當我查看電子郵件源時,我看到該文本已被注入。 但是這個地方錯了...

看一看:

MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="------------148F3F0AD3D65DD3F3498ACA"
Content-Language: pl
Status:   
X-EsetId: 37303A29AA1D9F60667466

This is injected text

This is a multi-part message in MIME format.
--------------148F3F0AD3D65DD3F3498ACA
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit

CONTENT CONTENT CONTENT
*********************************************************

插入的文本應放置在內容所在的位置。 現在在上面...

您無需解釋代碼,但看起來您正在嘗試在單個條件下使用多個操作。 為此使用括號。

:0
* ^Subject:.*weather
{
  :0 bfw
  | echo "This is injected text" ; echo "" ; cat

  :0 c
  ! mymail@somedomain.com
}

總結一下,每個配方都必須有一個標題行( :0和可能的標志)和一個動作。 條件是可選的,並且可以有多個。 進一步的配方塊是一種操作形式,因此可以滿足這些要求(其他操作類型是保存到文件夾,傳遞到命令或轉發到電子郵件地址)。

要將文本插入多部分郵件的第一個MIME主體部分的頂部,您需要進行一些MIME解析。 不幸的是,Procmail沒有對MIME的顯式支持,但是如果您知道傳入的消息將始終具有特定的結構,則可能會遇到一些非常簡單的事情。

:0
* ^Subject:.*weather
{
  :0fbw
  * ^Mime-version: 1\.0
  * ^Content-type: multipart/
  | awk '/^Content-type: text\/plain;/&&!s {n=s=1} \
      n&&/^$/{n=0; p=1} \
      1; \
      p{ print "This is injected text.\n"; p=0 }'

  :0 c
  ! mymail@somedomain.com
}

正文(包含所有MIME正文部分以及其標頭和所有內容)被傳遞到一個簡單的Awk腳本,該腳本在第一個text/plain MIME正文部分標頭之后(我們樂觀地假設是)找到第一個空行,並且在此處注入文字。 (Awk區分大小寫,因此可能需要對正則表達式文本進行改編或概括,並且我假設輸入消息中的空格是完全規則的。對於生產系統,這些簡化的假設是不現實的。)

如果您需要完全的MIME支持(例如,輸入消息可能是也可能不是,或者不是多部分的,或者包含嵌套的多部分),我的建議是使用某種現代的腳本語言,使用適當的MIME支持庫來編寫注入代碼; 我仍然會選擇Python,盡管它仍然(即使在3.6中的email庫更新之后)仍然有點笨拙。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM