การสร้างอีเมลแบบหลายส่วนและส่งใน Linux


12

เราใช้ mutt เพื่อส่งอีเมล

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

เราส่งการอัปเดตอีเมลของเราในรูปแบบ HTML เราต้องการส่งอีเมลแบบหลายส่วนที่มีทั้งแบบข้อความและรุ่น HTML

  1. เราจะสร้างข้อความแบบหลายส่วนเช่นใน Linux ได้อย่างไรเมื่อได้รับหัวเรื่องอีเมลและ HTML และข้อความในรูปแบบข้อความ
  2. เราสามารถใช้ mutt เพื่อส่งอีเมลหลายส่วนที่สร้างขึ้นในขั้นตอนที่ 1 จากพรอมต์ linux หรือไม่

สภาพแวดล้อม: RedHat Enterprise Linux 5, mutt

คำตอบ:


10

เราจะสร้างข้อความแบบหลายส่วนเช่นใน Linux ได้อย่างไรเมื่อได้รับหัวเรื่องอีเมลและ HTML และข้อความในรูปแบบข้อความ

สร้างข้อความประเภทmultipart/alternativeที่บันทึกไว้ในRFC 2046 :

จาก: ตัวอย่าง บริษัท <news@example.com>
ถึง: Joe User <joe.u@example.net>
วันที่: วันเสาร์ที่ 21 พฤษภาคม 2011 เวลา 17:40:11 +0300
Subject: ตัวอย่างข้อความ Multipart
MIME-Version: 1.0
เนื้อหาประเภท: หลายส่วน / ทางเลือก; ขอบเขต = asdfghjkl

--asdfghjkl
ประเภทเนื้อหา: ข้อความ / ธรรมดา; charset = UTF-8

สวัสดีทุกคน!

--asdfghjkl
ประเภทเนื้อหา: ข้อความ / html; charset = UTF-8

<! DOCTYPE html>
<body>
<p> สวัสดีทุกคน! </p>
</ body>

--asdfghjkl--

ดูRFC 2046และRFC 5322สำหรับไวยากรณ์ที่ถูกต้อง

เราสามารถใช้ mutt เพื่อส่งอีเมลหลายส่วนที่สร้างขึ้นในขั้นตอนที่ 1 จากพรอมต์ linux หรือไม่

หากคุณพบวิธีตั้งค่าส่วนหัวประเภทเนื้อหาที่เหมาะสม (ในตัวอย่างของคุณคุณกำลังใช้-eแต่ mutt ใช้-eเพื่อวัตถุประสงค์ที่แตกต่างกันแม้จะ-e "my_hdr Content-Type: ..."ทำให้ข้อความ / ส่วนหัวธรรมดายังคงอยู่)

sendmailมันจะดีกว่าที่จะส่งจดหมายสร้างโดยตรงผ่าน คุณจะต้องสร้างส่วนหัวด้วยตัวเอง - ดูตัวอย่าง ใช้strftime("%a, %d %b %Y %T %z")สำหรับวันที่และสตริงของตัวอักษรและตัวเลขแบบสุ่มสำหรับขอบเขต จากนั้นส่งข้อความที่เตรียมไว้รวมถึงส่วนหัวไปที่sendmail -i -t:

sendmail -i -t < above-example.txt

( -tตัวเลือกหมายถึง "รับผู้รับจากถึง:บรรทัด" หรือคุณสามารถใช้sendmail -i joe.u@example.net)


ขอบคุณสำหรับคำตอบที่ดี grawity! ขอขอบคุณที่อธิบายรายละเอียดวิธีการเขียนอีเมลแบบหลายส่วน :)
user544192

0

ลองดูที่https://github.com/shivylp/mailprod ฉันพัฒนายูทิลิตี้ / ไลบรารี Python ขนาดเล็กนี้เนื่องจากการใช้บรรทัดคำสั่งสำหรับอีเมลที่มีขนาดใหญ่ดูเหมือนจะไม่เป็นตัวเลือกที่เชื่อถือได้ ด้วย mailprodcli mailprodcli template.xml --sendมันเป็นง่ายๆเป็นว่า ตัวอย่าง template.xml ซึ่งรวมถึงรูปภาพนั้นง่ายพอ ๆ กับ:

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

สิ่งนี้จะส่งเวอร์ชันธรรมดาหรือไม่ ฉันเชื่อว่า OP ต้องการส่งอีเมลหลายส่วนโดยที่ทั้ง HTML และเนื้อหาธรรมดารวมอยู่ในข้อความเดียวกัน
cascer1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.