web-dev-qa-db-ja.com

マルチパートメールを作成してLinuxで送信する

メールの送信にはmuttを使用しています。

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

更新メールをHTML形式で送信します。テキストバージョンとhtmlバージョンの両方を含むマルチパートとしてメールを送信したいと思います。

  1. 電子メールの件名、および電子メールの本文のHTMLバージョンとテキストバージョンが指定されている場合、Linuxでこのようなマルチパートメッセージを作成するにはどうすればよいですか?
  2. Muttを使用して、ステップ1で作成したマルチパートメールをLinuxプロンプトから送信できますか?

環境:RedHat Enterprise Linux 5、mutt

12
user544192

電子メールの件名、および電子メールの本文のHTMLバージョンとテキストバージョンが指定されている場合、Linuxでこのようなマルチパートメッセージを作成するにはどうすればよいですか?

RFC 2046 に記載されているように、タイプ_multipart/alternative_のメッセージを作成します。

 From:Example Company <[email protected]> 
 To:Joe User <[email protected]> 
 Date:Sat、21 May 2011 17:40: 11 +0300 
件名:マルチパートメッセージの例
 MIME-バージョン:1.0 
コンテンツタイプ:マルチパート/代替; border = asdfghjkl 
 
-asdfghjkl 
 Content-Type:text/plain; charset = utf-8 
 
みなさん、こんにちは!
 
-asdfghjkl 
 Content-Type:text/html; charset = utf-8 
 
 <!DOCTYPE html> 
 <body> 
 <p>みなさん、こんにちは!</ p> 
 </ body> 
 
-asdfghjkl-

正確な構文については、 RFC 2046 および RFC 5322 を参照してください。

Muttを使用して、ステップ1で作成したマルチパートメールをLinuxプロンプトから送信できますか?

適切なContent-Typeヘッダーを設定する方法を見つけた場合。 (あなたの例では、_-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_オプションは、「To:行から受信者を取得する」ことを意味します。代わりに_sendmail -i [email protected]_を使用することもできます)

10
user1686

https://github.com/shivylp/mailprod をご覧ください。私はこの小さなPythonユーティリティ/ライブラリを開発しました。大きなメールにコマンドラインを使用することは信頼できるオプションではないようだったからです。mailprodcliを使用すると、mailprodcli template.xml --sendと言うだけで簡単です。テンプレートの例画像を含む.xmlは次のように単純です。

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