Tworzenie wieloczęściowej wiadomości e-mail i wysyłanie jej w systemie Linux

12

Używamy mutt do wysyłania e-maili.

mutt -s "Test" -e "Content-Type: text/html" [email protected] < message.html

Wysyłamy nasze aktualizacje e-mailem w formacie HTML. Chcielibyśmy wysyłać wiadomości e-mail jako wieloczęściowe zawierające zarówno wersję tekstową, jak i HTML.

  1. Jak tworzymy taką wieloczęściową wiadomość w systemie Linux, gdy podaje się temat wiadomości e-mail oraz wersje HTML i tekstowe treści wiadomości e-mail?
  2. Czy możemy użyć mutt, aby wysłać wieloczęściową wiadomość e-mail utworzoną w kroku 1, z wiersza polecenia systemu Linux?

Środowisko: RedHat Enterprise Linux 5, mutt

użytkownik544192
źródło

Odpowiedzi:

10

Jak tworzymy taką wieloczęściową wiadomość w systemie Linux, gdy podaje się temat wiadomości e-mail oraz wersje HTML i tekstowe treści wiadomości e-mail?

Utwórz wiadomość typu multipart/alternativezgodnie z dokumentem RFC 2046 :

Od: Przykładowa firma <[email protected]>
Do: Joe Użytkownik <[email protected]>
Data: sob., 21 maja 2011 17:40:11 +0300
Temat: Przykład wiadomości wieloczęściowej
Wersja MIME: 1.0
Content-Type: wieloczęściowy / alternatywny; granica = asdfghjkl

--asdfghjkl
Content-Type: tekst / zwykły; charset = utf-8

Cześć wszystkim!

--asdfghjkl
Content-Type: text / html; charset = utf-8

<! DOCTYPE html>
<body>
<p> Witam wszystkich! </p>
</body>

--asdfghjkl--

Patrz RFC 2046 i RFC 5322 dla dokładnej składni.

Czy możemy użyć mutt, aby wysłać wieloczęściową wiadomość e-mail utworzoną w kroku 1, z wiersza polecenia systemu Linux?

Jeśli znajdziesz sposób na ustawienie odpowiedniego nagłówka Content-Type. (W twoim przykładzie używasz -e, ale mutt używa -edo różnych celów. Nawet -e "my_hdr Content-Type: ..."pozostawia nienaruszony oryginalny tekst / zwykły nagłówek.)

Lepiej jest wysłać wygenerowaną pocztę bezpośrednio przez sendmail. Musisz samodzielnie utworzyć nagłówki - patrz przykład; użyj strftime("%a, %d %b %Y %T %z")dla Data i ciągu losowych znaków alfanumerycznych dla granicy. Następnie potokuj przygotowany komunikat, w tym nagłówki, do sendmail -i -t:

sendmail -i -t < above-example.txt

( -tOpcja oznacza „pobierz adresatów z linii Do: ”; możesz też użyć sendmail -i [email protected])

użytkownik1686
źródło
Dzięki za świetną odpowiedź, grawitacja! Dziękujemy również za szczegółowe wyjaśnienie, jak utworzyć wieloczęściową wiadomość e-mail. :)
user544192
0

Spójrz na https://github.com/shivylp/mailprod . Opracowałem to małe narzędzie / bibliotekę Python, ponieważ użycie wiersza polecenia do dużych wiadomości e-mail nie wydaje się być niezawodną opcją. Z mailprodcli jest to tak proste, jak powiedzenie mailprodcli template.xml --send. Przykładowy szablon.xml, który zawiera nawet obraz, jest tak prosty, jak:

<?xml version="1.0" encoding="UTF-8"?>
<mail>
  <from>[email protected]</from>
  <to>[email protected]</to>
  <to>[email protected]</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>
Shivaprasad Bhat
źródło
Czy to również prześle wersję w postaci zwykłego tekstu? Uważam, że OP chce wysłać wieloczęściową wiadomość e-mail, w której zarówno treść HTML, jak i zwykły tekst są zawarte w tej samej wiadomości.
cascer1