LinuxのHeirloom mailxのHTMLメール

LinuxのHeirloom mailxのHTMLメール

私はLinuxサーバーのmailxからhtmlメールを送信しようとしました。

参考にするいくつかの点:

  • sendmailを使用できないようにsmtpサーバーを指定する必要があります(変更できるものではありません)。
  • muttなどのサードパーティ製品をインストールできません。メールまたはmailxを使用する必要があります。
  • 私のバージョンのmail / xは家に見えるので、--appendまたは-a(ヘッダー追加オプション)はありません。
  • これが役に立つかどうかはわかりませんが、私のLinuxディストリビューションは7.3(Maipo)です。

私のイベントに関して、stackoverflowのほとんどの投稿で見たものは次のとおりです。

mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject\nContent-Type: text/html")" -r FROM TO < htmlmail.txt

私の場合は、プレーンテキストの電子メールのみを返します。

だから今まで私が試したことは次のとおりです。

1を試してください:

Content-Disposition:inlineを追加する記事を見ました。

mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject v1\nContent-Type: text/html\nMIME-Version: 1.0\nContent-Disposition: inline")" -r FROM TO < htmlmail.txt

これによりhtmlメールが送信されますが、本文にヘッダーが含まれているため、出力は次のようになります。

コンテンツ処理:インラインメッセージID:ユーザーエージェント:Heirloom mailx 12.5 7/5/10 MIMEバージョン:1.0コンテンツタイプ:Text / Plain; Charset = us-asciiコンテンツ転送エンコーディング:7ビットこんにちは世界

2回試してください:

だから、タイトルが本文に印刷されたくありません。だからContent-Disposition:inlineを削除してみました。

mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject v2\nContent-Type: text/html\nMIME-Version: 1.0")" -r FROM TO < htmlmail.txt

これにより、次の簡単なテストメールが送信されます。

<html> <b>Hello World</b> </html>

3回試してみてください:

コンテンツタイプと無言劇バージョンを変えてみてください。

mailx -v -S SERVER -s "$(echo -e "This is the subject v3\nMIME-Version: 1.0\nContent-Type: text/html")" -r FROM TO < htmlmail.txt

結局、このコードから電子メールを受信できませんでした。

4回試してみてください:

問題を見つけるのに役立つように、オンラインで別のタイトルを試してみました。そのため、Eメールの優先順位を設定するためのヘッダーオプションを追加しました。

mailx -v -S smtp=SERVER -s "$(echo -e "This is a subject v4\nContent-Type: text/html\nX-Priority: 1 (Highest)")" -r FROM TO < htmlmail.txt

結局、優先順位の高いメールが送信されましたが、すべてプレーンテキストでした。

5を試してください:

以前の試みでMIMEヘッダーを追加しました。

mailx -v -S smtp=SERVER -s "$(echo -e "This is a subject v5\nMIME-Version: 1.0\nContent-Type: text/html\nX-Priority: 1 (Highest)")" -r FROM TO < htmlmail.txt

これにより、本文にヘッダーを含む電子メールが送信され、優先順位が高く設定されなくなります。

X優先順位:1(ほとんど)ニュースID:ユーザーエージェント:Heirloom Mailx 12.5 7/5/10 MIMEバージョン:1.0コンテンツタイプ:テキスト/純粋なテキスト、文字セット= us-asciiコンテンツ転送コード:7桁こんにちは世界

結局、私は上記の試みをさまざまに適用してみましたが、新しい結果は出ませんでした。

したがって、私たちはどんな提案やアイデアでも喜んで受け入れます!上記の制限を念頭に置いてください。オプションが制限されていることを知っていますが、これは私が制御できないことです。

時間をいただきありがとうございます!

ベストアンサー1

まず、いくつかのコンテキスト:私は次のスレッドのようにheirloom-mailxバージョンを使用しています。 https://serverfault.com/questions/136106/what-package-to-install-for-sending-emails-from-localhost-ubuntu

私はUbuntu 16.04 Xenialを使用しています。 Ubuntu Server 16.04でも試しました。

電子メールを送信するには、次の機能を使用してmailx(bashのheirloom mailx)を介してメールを送信します。

sendmail() {
#Sending Report Email
heirloom-mailx -a $2 -v -s ""$(echo -e "subject 3\nContent-Type: text/html")"" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://mail.mymailserver:port \
-S from="[email protected]" \
-S [email protected] \
-S smtp-auth-password='password' \
-S ssl-verify=ignore \
$1 < body.html
}

ここで、$2 は添付ファイル、$1 は宛先です。注:1.添付ファイルも本文内で印刷されますが、添付ファイルなしでHTMLファイルのみを転送したい場合は、この方法が適している可能性があります。 2. "-v"オプションを使用すると詳細情報が印刷されるため、無視できる.mime.typesの問題が発生する可能性があります。 mailxに詳細が表示されたくない場合は、このオプションを削除してください。 3. "-a"オプションを使用している場合は、本文に次の内容が表示されます。これはMIME形式のマルチパートメッセージです。 --=-=fFPa7dLqoSF1TGj-YDc2k8bdvmjpix_4sKFT=-=コンテンツタイプ:テキスト/プレーンテキスト、文字セット= US-ASCIIコンテンツ処理:インライン

この場合は、プレーンテキストファイルを添付します。コマンドから「-a $2」を削除すると、htmlメッセージを印刷できます。したがって、最終結果は次のようになります。

sendmail() {
    #Sending Report Email
    heirloom-mailx -s ""$(echo -e "subject 3\nContent-Type: text/html")"" \
    -S smtp-use-starttls \
    -S ssl-verify=ignore \
    -S smtp-auth=login \
    -S smtp=smtp://mail.mymailserver:port \
    -S from="[email protected]" \
    -S [email protected] \
    -S smtp-auth-password='password' \
    -S ssl-verify=ignore \
    $1 < body.html
    }

それを試して教えてください。端末でテストしましたが、うまくいきます。

おすすめ記事