2

メールクライアントとしてmuttoversshを使用しています。これはうまく機能しますが、添付ファイル(主に画像)を見るのは少し面倒です。今、私の考えは、電子メールを解析し、添付ファイルをサーバーに保存し、添付ファイルにアクセスするためのURLを作成し、このURLを電子メール内に配置することです。誰かがすでにこれをしましたか?これを達成する簡単な方法は何ですか?

すでにprocmailを使用してフィルタリングを行っていますが、これを使用してメールにテキストを挿入できますか?

ありがとう

4

2 に答える 2

2

できますよ。ただし、MIMEを直接サポートすることはできないため、処理しているメッセージのMIME構造を台無しにしないようにするために、多かれ少なかれ賢いものが必要になるでしょう。

簡単な開始例として、添付ファイルを抽出し、~/public_html/prv/att000.jpgこれを提供するようにWebサーバーを設定したとするとhttp://localhost:8080/~you/prv/att00.jpg、次のようなヘッダーを追加できます。

:0fhw
| formail -I"X-Tracted: http://localhost:8080/~you/prv/att00.jpg"

メッセージ自体にインラインで何かを追加するのは難しいですが、私は決して不可能ではありません。

編集:レシピ内からMessage-Idを抽出する場合、スクリプトを単純化して一時ファイルを使用しないようにすることができます(そして、byによって、Catの複数の役に立たない使用を回避します)。

# Whitespace in [square brackets] is tab, space
:0c
* ^Message-Id:[   ]*<\/[^@>]+
| (mkdir -p "webserver path"/"$MATCH"; munpack -C "webserver path"/"$MATCH" )

...しかし、おそらくスクリプトを(役に立たない猫なしで)保持し、添付ファイルを抽出するだけでなく、添付ファイルへのリンクをインライン化して標準出力に変更されたメッセージを作成するように変更する必要があります。

私は3つのオプションを提案することができますが、それらはすべて少し面倒です。受信メッセージが(multipart / mixed(text / plain(multipart / related text / html image / png image / png)))であるとします。あなたは出来る

  1. メッセージを(multipart / related(text / plain:ここにあるリンクのリスト))(message / rfc822:ここにある元のメッセージ:(multipart / mixed(text / plain(multipart / related text / html image / png image / png )))))これは、元のメッセージを解析する必要はまったくありませんが、ほとんどのクライアントで表示するのは面倒です。

  2. 常にテキスト/プレーン部分があると想定し、その最後にリンクのリストを添付します。これには、最初のテキスト/プレーン部分を見つけて拡張するロジックと、最初の部分としてテキスト/プレーン部分がない場合の何らかのフォールバックが必要です。

  3. すべてのメッセージがマルチパート/*であると想定し、最初の部分として、または最初のテキスト/プレーン部分の直後に、テキスト/プレーン部分を最初の近くに追加します。これには同じロジックが必要であり、一部のクライアントで表示するのは厄介かもしれませんが、着信メッセージについての仮定が少なくなるため、より安全になる可能性があります。

これをコーディングできれば、Procmailを呼び出すのは非常に簡単です。h以前のレシピ(ヘッダーでのみフィルタリングするように指定)からフラグを省略してください。

:0fw
| replace-entire-message-with-a-different-message
于 2011-09-12T11:46:01.097 に答える
0

現時点で私はこれを持っています:

procmailで私はこのようなコピーをします:

:0c
| myscript.sh

次にmyscript.shで

path="webserver path"

tee _temp >& /dev/null # is there a different way of doing this?

# extract message-id
mid=$(cat _tempmail | formail -c -x message-id - | sed 's/ <\(.*\)@.*>/\1/')

mkdir $path/$mid

# extract all attachments into directory depending on the message id
cat _tempmail | munpack -C $path/$mid

したがって、私がしなければならないのは、メールからメッセージIDを取得し、URLを作成することだけです。

tripleeeが提案したように、このURLをヘッダーとして追加できます。

メッセージにリンクがあればいいのですが、また別の機会にリンクを張るつもりです。現時点では、このソリューションで問題ありません。

于 2011-09-12T12:25:02.563 に答える