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" test@example.com < 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

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 <news@example.com>
Do: Joe Użytkownik <jan.u@example.net>
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 joe.u@example.net)


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.