私は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
}
それを試して教えてください。端末でテストしましたが、うまくいきます。