Criando um email com várias partes e enviando-o no Linux


12

Usamos o mutt para enviar e-mails.

mutt -s "Test" -e "Content-Type: text/html" test@example.com < message.html

Enviamos nossas atualizações por email no formato HTML. Gostaríamos de enviar e-mails em várias partes, contendo uma versão em texto e uma versão em html.

  1. Como criamos uma mensagem com várias partes no Linux quando o assunto do email e as versões HTML e texto do corpo do email são fornecidas?
  2. Podemos usar o mutt para enviar o email com várias partes criado na etapa 1, a partir do prompt do linux?

Ambiente: RedHat Enterprise Linux 5, mutt

Respostas:


10

Como criamos uma mensagem com várias partes no Linux quando o assunto do email e as versões HTML e texto do corpo do email são fornecidas?

Crie uma mensagem do tipo multipart/alternativeconforme documentado no RFC 2046 :

De: empresa exemplo <news@example.com>
Para: Usuário Joe <joe.u@example.net>
Data: sábado, 21 de maio de 2011 17:40:11 +0300
Assunto: Exemplo de mensagem multipartes
Versão MIME: 1.0
Tipo de Conteúdo: multipart / alternativo; limite = asdfghjkl

--asdfghjkl
Tipo de conteúdo: texto / sem formatação; charset = utf-8

Olá a todos!

--asdfghjkl
Tipo de Conteúdo: text / html; charset = utf-8

<! DOCTYPE html>
<body>
<p> Olá pessoal! </p>
</body>

--asdfghjkl--

Consulte RFC 2046 e RFC 5322 para obter a sintaxe exata.

Podemos usar o mutt para enviar o email com várias partes criado na etapa 1, a partir do prompt do linux?

Se você encontrar uma maneira de definir o cabeçalho correto do Tipo de conteúdo. (No seu exemplo, você está usando -e, mas o mutt usa -epara propósitos diferentes. Até -e "my_hdr Content-Type: ..."deixa o cabeçalho de texto / sem formatação intacto.)

É melhor enviar emails gerados diretamente sendmail. Você precisará criar os cabeçalhos - veja o exemplo; use strftime("%a, %d %b %Y %T %z")para Data e uma sequência de caracteres alfanuméricos aleatórios para o limite. Em seguida, canalize a mensagem preparada, incluindo os cabeçalhos, para sendmail -i -t:

sendmail -i -t < above-example.txt

(A -topção significa "obter destinatários da linha Para: "; você pode usar como alternativa sendmail -i joe.u@example.net)


Obrigado pela ótima resposta, grawity! Obrigado também por explicar em detalhes como compor um email com várias partes. :)
user544192

0

Dê uma olhada em https://github.com/shivylp/mailprod . Eu desenvolvi esse pequeno utilitário / biblioteca Python, pois o uso da linha de comando para emails grandes não parecia ser uma opção confiável. Com o mailprodcli, é tão simples quanto dizer mailprodcli template.xml --send. O exemplo template.xml, que inclui até uma imagem, é tão simples quanto:

<?xml version="1.0" encoding="UTF-8"?>
<mail>
  <from>sender@source.com</from>
  <to>recipient1@destination1.com</to>
  <to>recipient2@destination2.com</to>
  <body type="text/html">
    <![CDATA[<html>
<b>Neat!</b><br><center><img src="cid:sample"></center>
</html>]]>
  </body>
  <body type="image" src="sample.png" id="sample" />
</mail>

Isso também enviará uma versão em texto sem formatação? Acredito que o OP deseja enviar um email com várias partes em que o conteúdo HTML e de texto sem formatação esteja incluído na mesma mensagem.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.