Çok parçalı bir e-posta oluşturma ve Linux'ta gönderme


12

E-posta göndermek için mutt kullanıyoruz.

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

E-posta güncellemelerimizi HTML biçiminde gönderiyoruz. Hem metin sürümünü hem de html sürümünü içeren e-postaları çok parçalı olarak göndermek istiyoruz.

  1. E-posta konusu, e-posta gövdesinin HTML ve metin sürümleri verildiğinde Linux'ta böyle çok bölümlü bir mesajı nasıl oluştururuz?
  2. 1. adımda oluşturulan çok parçalı e-postayı linux isteminden göndermek için mutt'u kullanabilir miyiz?

Çevre: RedHat Enterprise Linux 5, mutt

Yanıtlar:


10

E-posta konusu, e-posta gövdesinin HTML ve metin sürümleri verildiğinde Linux'ta böyle çok bölümlü bir mesajı nasıl oluştururuz?

RFC 2046'damultipart/alternative belgelendiği gibi bir tür mesaj oluşturun :

Kimden: Örnek Şirket <news@example.com>
Alıcı: Joe Kullanıcı <joe.u@example.net>
Tarih: Cmt, 21 Mayıs 2011 17:40:11 +0300
Subject: Çok parçalı mesaj örneği
MIME Sürümü: 1.0
İçerik Türü: çok parçalı / alternatif; Sınır = asdfghjkl

--asdfghjkl
İçerik Türü: metin / düz; karakter kümesi = UTF-8

Herkese merhaba!

--asdfghjkl
İçerik Türü: metin / html; karakter kümesi = UTF-8

<! DOCTYPE html>
<Body>
<p> Herkese merhaba! </p>
</ Body>

--asdfghjkl--

Tam sözdizimi için bkz. RFC 2046 ve RFC 5322 .

1. adımda oluşturulan çok parçalı e-postayı linux isteminden göndermek için mutt'u kullanabilir miyiz?

Doğru Content-Type başlığını ayarlamanın bir yolunu bulursanız. (Örneğin, farklı amaçlar için -ekullanıyorsunuz ancak mutt kullanıyorsunuz -e. -e "my_hdr Content-Type: ..."Orijinal metni / düz üstbilgiyi olduğu gibi bırakabilirsiniz.)

Oluşturulan postaları doğrudan üzerinden göndermek daha iyidir sendmail. Üstbilgileri kendiniz oluşturmanız gerekir - örneğe bakın; strftime("%a, %d %b %Y %T %z")Date için kullanın ve sınır için rastgele alfasayısal karakterler dizisi kullanın . Ardından, başlıklar da dahil olmak üzere hazırlanan mesajı aşağıdakilere iletin sendmail -i -t:

sendmail -i -t < above-example.txt

(Bu -tseçenek "alıcıları Alıcı : satırından al" anlamına gelir ; alternatif olarak kullanabilirsiniz sendmail -i joe.u@example.net)


Harika cevap için teşekkürler, yerçekimi! Çok parçalı bir e-postanın nasıl oluşturulacağını ayrıntılı olarak açıkladığınız için de teşekkür ederiz. :)
user544192

0

Bir göz atın https://github.com/shivylp/mailprod . Bu küçük Python yardımcı programını / kütüphanesini geliştirdim çünkü büyük postalar için komut satırı kullanmak güvenilir bir seçenek değildi. Mailprodcli ile söylemek kadar basit mailprodcli template.xml --send. Hatta bir resim içeren template.xml örneği:

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

Bu aynı zamanda düz metin sürümü de gönderecek mi? OP'nin hem HTML hem de düz metin içeriğinin aynı mesaja dahil edildiği çok parçalı bir e-posta göndermek istediğine inanıyorum.
cascer1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.