Procmail - resposta automática com anexo

1

Estou tentando responder automaticamente usando o procmail. Quero enviar de volta um formulário HTML com anexos (images; jpg / png). Existe uma maneira simples de conseguir isso? Este é o meu pedaço de código até agora:

: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

O reply.html foi passado corretamente & enviado para o remetente, no entanto não consigo ver as imagens que estão definidas no arquivo html. Eu tentei a codificação de imagem base64 sem sucesso, como o Google parece ignorá-los e exibe quadrados feios.

    
por Peter 26.01.2015 / 17:20

1 resposta

2

O que você deve trabalhar, desde que o arquivo $HOME/reply.html esteja formatado corretamente. Infelizmente, como por sua descrição, não é.

Incidentalmente, eu fatoraria o máximo possível dos cabeçalhos estáticos nesse arquivo, e só usaria formail para preceder os cabeçalhos que não podem ser calculados com antecedência. Isso deixa você com apenas

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

na receita do Procmail (e se o cabeçalho XLOOP for de fato também estático, você pode incluir isso no modelo. O grep . é porque formail fornece uma linha vazia como o "gargalo" entre os cabeçalhos e corpo quando gera cabeçalhos de resposta, mas não queremos isso aqui, já que estaremos fornecendo cabeçalhos adicionais no arquivo que estamos catenando após os cabeçalhos de formail ; portanto, removemos a linha vazia da saída) .

O truque é ter as diferentes partes MIME conectadas umas nas outras corretamente. Aqui está um modelo de tipos. Note que este não é um arquivo HTML - é uma estrutura MIME que contém uma parte HTML, uma parte da imagem e outro tipo de chaff - então você pode querer renomeá-lo.

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="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--

Observe como a parte MIME de nível superior é multipart/related e, em seguida, contém partes MIME individuais que podem se vincular umas às outras. (Isso é tudo datilografado ad hoc, então peço desculpas por quaisquer erros ou descuidos.)

    
por 28.01.2015 / 07:12