Tạo một email nhiều phần và gửi nó trong Linux


12

Chúng tôi sử dụng mutt để gửi email.

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

Chúng tôi gửi các cập nhật email của chúng tôi ở định dạng HTML. Chúng tôi muốn gửi email dưới dạng nhiều phần chứa cả phiên bản văn bản và phiên bản html.

  1. Làm cách nào để chúng tôi tạo một thông báo nhiều phần như vậy trong Linux khi chủ đề email và HTML và phiên bản văn bản của phần thân email được đưa ra?
  2. Chúng ta có thể sử dụng mutt để gửi email nhiều phần được tạo ở bước 1, từ dấu nhắc linux không?

Môi trường: RedHat Enterprise Linux 5, mutt

Câu trả lời:


10

Làm cách nào để chúng tôi tạo một thông báo nhiều phần như vậy trong Linux khi chủ đề email và HTML và phiên bản văn bản của phần thân email được đưa ra?

Tạo một thông điệp loại multipart/alternativenhư được ghi trong RFC 2046 :

Từ: Công ty mẫu <news@example.com>
Tới: Người dùng Joe <joe.u@example.net>
Ngày: Thứ bảy, ngày 21 tháng 5 năm 2011 17:40:11 +0300
Chủ đề: Ví dụ tin nhắn nhiều phần
Phiên bản MIME: 1.0
Loại nội dung: nhiều phần / thay thế; ranh giới = asdfghjkl

--asdfghjkl
Loại nội dung: văn bản / thuần túy; bộ ký tự = utf-8

Xin chào tất cả mọi người!

--asdfghjkl
Loại nội dung: văn bản / html; bộ ký tự = utf-8

<! DOCTYPE html>
<cơ thể>
<p> Xin chào mọi người! </ p>
</ cơ thể>

--asdfghjkl--

Xem RFC 2046RFC 5322 để biết cú pháp chính xác.

Chúng ta có thể sử dụng mutt để gửi email nhiều phần được tạo ở bước 1, từ dấu nhắc linux không?

Nếu bạn tìm cách đặt tiêu đề Kiểu nội dung phù hợp. (Trong ví dụ của bạn, bạn đang sử dụng -e, nhưng mutt sử dụng -echo các mục đích khác nhau. Thậm chí -e "my_hdr Content-Type: ..."còn giữ nguyên văn bản gốc / tiêu đề gốc.)

Tốt hơn là gửi thư được tạo trực tiếp thông qua sendmail. Bạn sẽ phải tự tạo các tiêu đề - xem ví dụ; sử dụng strftime("%a, %d %b %Y %T %z")cho Ngày và một chuỗi các ký tự chữ và số ngẫu nhiên cho đường biên. Sau đó chuyển thông điệp đã chuẩn bị, bao gồm các tiêu đề, sang sendmail -i -t:

sendmail -i -t < above-example.txt

( -tTùy chọn này có nghĩa là "nhận người nhận từ dòng Đến: "; bạn có thể sử dụng thay thế sendmail -i joe.u@example.net)


Cảm ơn câu trả lời tuyệt vời, sự tham lam! Cũng cảm ơn vì đã giải thích chi tiết cách soạn email nhiều phần. :)
user544192

0

Hãy xem https://github.com/shivylp/mailprod . Tôi đã phát triển tiện ích / thư viện Python nhỏ này vì sử dụng dòng lệnh cho các thư lớn dường như không phải là một lựa chọn đáng tin cậy. Với mailprodcli, nó đơn giản như nói mailprodcli template.xml --send. Ví dụ template.xml bao gồm một hình ảnh đơn giản như:

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

Điều này cũng sẽ gửi một phiên bản văn bản gốc? Tôi tin rằng OP muốn gửi một email gồm nhiều phần trong đó cả nội dung HTML và văn bản gốc được bao gồm trong cùng một thư.
cascer1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.