Procmail - 带附件的自动回复

Procmail - 带附件的自动回复

我正在尝试使用 procmail 自动回复。我想发回带有附件的 HTML 表单(图像;jpg/png)。有没有一种简单的方法可以实现这一点?这是我到目前为止的代码:

:0
| ($FORMAIL -rA "$XLOOP" -i "Content-Type: text/html; Content-Transfer-Encoding: base64" -A "Reply-To: [email protected]" -I "From: [email protected]"; cat $HOME/reply.html) | $SENDMAIL -oi -t

reply.html正确传递并发送给发件人,但是我看不到 html 文件中定义的图像。我尝试过base64图像编码但没有成功,因为谷歌似乎跳过它们并显示丑陋的方块。

答案1

只要文件$HOME/reply.html格式正确,您所拥有的应该可以工作。唉,根据你的描述,事实并非如此。

顺便说一句,我会尽可能多地将静态标头分解到该文件中,并且仅用于formail前置无法提前计算的标头。这样你就只剩下

:0
| (formail -rA "$XLOOP" | grep .; cat $HOME/reply.html) | $SENDMAIL -oi -t

在 Procmail 配方中(如果XLOOP标头实际上也是静态的,您也可以将其纳入模板中。这grep .是因为formail当它生成回复标头时,在标头和正文之间提供一个空行作为标头和正文之间的“颈部”,但我们在这里不希望这样,因为我们将在文件中提供额外的标头formail,因此我们从输出中删除空行)。

诀窍是让不同的 MIME 部分正确地相互连接。这是一个模板。请注意,这根本不是一个 HTML 文件——它是一个 MIME 结构,其中包含 HTML 部分、图像部分和一些其他内容——因此您可能需要重命名它。

From: [email protected]
X-Reply-To: The reply-to: header is redundant if its value is the same as From:
MIME-Version: 1.0
Content-Type: multipart/related; boundary="reasonablyuniquegobbledygook"

--reasonablyuniquegobbledygook
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

This message is HTML-only because I hate you.  Nothing personal, I hate
everyone.

--reasonablyuniquegobbledygook
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<html><head><title>Reply</title></head><body><p>
I cannot think of a situation where you would genuinely want to base64
your HTML.
<img src=3D"cid:logo.png"></p></body></html>

--reasonablyuniquegobbledygook
Content-Type: image/png; name="logo.png"
Content-Transfer-Encoding: base64
Content-Id: <logo.png>

SGVyZSBpcyBzb21lIGJhc2U2NCBmb3IgeW91LiAgVGhpcyBpcyBvYnZpb3VzbHkgYWN0dWFsbHkg
dGV4dCwgbm90IGltYWdlL3BuZyBkYXRhLgo=

--reasonablyuniquegobbledygook--

请注意顶级 MIME 部分的结构multipart/related,然后包含可以相互链接的各个 MIME 部分。 (这都是临时打印的,因此对于任何错误或疏忽表示歉意。)

相关内容