質問
Unix コマンドラインからメッセージを送信するには mail TO_ADDR
結果として次からのメールが届きます $USER@$HOSTNAME
. 。によって挿入された「From:」アドレスを変更する方法はありますか? mail
?
記録のために書いておきますが、私は Ubuntu で GNU Mailutils 1.1/1.2 を使用しています (ただし、Fedora と RHEL でも同じ動作が見られました)。
[編集]
$ mail -s Testing chris@example.org Cc: From: foo@bar.org Testing .
収量
Subject: Testing To: <chris@example.org> X-Mailer: mail (GNU Mailutils 1.1) Message-Id: <E1KdTJj-00025z-RK@localhost> From: <chris@localhost> Date: Wed, 10 Sep 2008 13:17:23 -0400 From: foo@bar.org Testing
「から:foo@bar.org」行はメッセージ本文の一部であり、ヘッダーの一部ではありません。
解決
私のバージョンのメール (Debian linux 4.0) では、送信元/返信アドレスを制御するために次のオプションが機能します。
- の -a 追加のヘッダーを適用するには、From: を指定するスイッチ。送信メールヘッダーに追加されるコマンドラインのヘッダー
- の $REPLYTO 環境変数は Reply-To を指定します。ヘッダ
したがって、次のシーケンス
export REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'
私のメールクライアントでは、結果として cms-sends@example.com からのメールが送信され、このメールへの返信はデフォルトで cms-replies@example.com になります。
注意: Mac OS ユーザー:-a はありませんが、持っています $REPLYTO
注意(2): CentOS ユーザーの場合、多くのコメント投稿者が、使用する必要があると付け加えています。 -r
ない -a
注意(3): この回答は少なくとも 10 年前のものです (1)。Google からアクセスする場合は、そのことを念頭に置いてください。
他のヒント
Centos 5.3 では次のことができます。
mail -s "Subject" user@address.com -- -f from@address.com < body
二重ダッシュは、メールによる -f 引数の解析を停止し、それを sendmail 自体に渡します。
GNU mailutils の「mail」コマンドでは、これを (少なくとも簡単には) 実行できません。ただし、「heirloom-mailx」をインストールする場合、そのメール コマンド (mailx) には、デフォルトの「$USER@$HOSTNAME」from フィールドをオーバーライドする「-r」オプションがあります。
echo "Hello there" | mail -s "testing" -r sender@company.com recipient@company.com
「mailx」では機能しますが、「mail」では機能しません。
$ ls -l /usr/bin/mail lrwxrwxrwx 1 root root 22 2010-12-23 08:33 /usr/bin/mail -> /etc/alternatives/mail $ ls -l /etc/alternatives/mail lrwxrwxrwx 1 root root 23 2010-12-23 08:33 /etc/alternatives/mail -> /usr/bin/heirloom-mailx
mail -s "$(echo -e "This is the subject\nFrom: Paula <johny@paula.com>\n
Reply-to: 1232564@yourserver.com\nContent-Type: text/html\n")"
milas.josh@gmail.com < htmlFileMessage.txt
上記は私の解決策です...追加のヘッダーは、from の直後と返信先の前に追加できます...追加する前にヘッダーの構文を知っていることを確認してください...これは私にとっては完璧に機能しました。
あと、使い勝手が良いです -F option
送信者の名前を指定します。
このようなもの:
mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com
または、利用可能なオプションを確認してください。http://www.courier-mta.org/sendmail.html
次のようなものを使用して、差出人名と差出人アドレスの両方を設定することもできます。
echo test | mail -s "test" example@example.com -- -F'Some Name<example2@example.com>' -t
なぜか通り過ぎて -F'Some Name'
そして -fexample2@example.com
機能しませんが、 -t
sendmail は機能し、「簡単」です。
以下にいくつかのオプションがあります。
十分な権限がある場合は、ジェネリックテーブルを使用して書き換えを行うように sendmail を設定します。
ヘッダー全体を自分で書きます (または自分にメールして、すべてのヘッダーを含むメッセージ全体を保存して再編集し、コマンド ラインから rmail を使用して送信します)
sendmail で直接送信し、「-f」コマンド ライン フラグを使用し、メッセージに「From:」行を含めないでください。
これらはすべてまったく同じではありませんが、さらに詳しく調べるのはあなたに任せます。
私のポータブルでは、sendmail を送信メールサーバーのクライアントとして認証しており、ジェネリックを使用して返信メールが別のアカウントに届くようにしています。それはまるで魔法のように機能します。受信メールを fetchmail で集約します。
他のOSでも同じかどうかはわかりませんが、OpenBSDではmailコマンドは次のような構文になります。
mail to-addr ... -sendmail-options ...
sendmail には -f オプションがあり、FROM の電子メール アドレスを指定します。分野。次のコマンドは私にとってはうまくいきます。
mail recepient@example.com -f from@example.com
ありがとうBEAU
mail -s "Subject" user@address.com -- -f from@address.com
私はちょうどこれを見つけました、そしてそれは私にとってうまくいきます。CentOS 5 のメール 8.1 のマニュアル ページにはこれについて記載されていません。のために -f
オプションのマニュアルページには次のように書かれています。
-f システム メールボックスではなく、file オペランドで指定されたファイルからメッセージを読み取ります。(フォルダーも参照してください。) file オペランドが指定されていない場合は、システム メールボックスではなく mbox からメッセージを読み取ります。
とにかく、これを見つけるのは素晴らしいことです、ありがとう。
上記のすべての回答からこれを導き出しました。それぞれを試してみても何もうまくいきませんでした。上記の答えをすべて組み合わせて試行錯誤を繰り返し、これに結論付けました。これがあなたにとってうまくいくかどうかはわかりませんが、私の場合は Ununtu 12.04 と RHEL 5.4 でうまくいきました。
echo "This is the body of the mail" | mail -s 'This is the subject' '<receiver-id1@email.com>,<receiver-id2@email.com>' -- -F '<SenderName>' -f '<from-id@email.com>'
任意の数の受信者 ID を追加することで、任意の数の人にメールを送信できます。メールは次のように送信されます。 送信者名 から from-id@email.com
お役に立てれば。
Debian 7 では、この質問の回答を使用して送信者アドレスを正しく設定できませんでしたが (常にサーバーのホスト名になります)、この方法で解決しました。
インストール 家宝メールx
apt-get install heirloom-mailx
それがデフォルトであることを確認してください。
update-alternatives --config mailx
メッセージを作成します。
mail -s "Testing from & replyto" -r "sender <sender@example.com>" -S replyto="sender@example.com" recipient@example.net < <(echo "Test message")
echo "body" | mail -S from=address@foo.com "Hello"
-S を使用すると、ヘッダーなどを変更する最も簡単な方法である多くの文字列オプションを指定できます。
CentOS では、これは私にとってはうまくいきました:
echo "email body" | mail -s "Subject here" -r from_email_address email_address_to
これは私にとってはうまくいきました
echo "hi root"|mail -rsawrub@testingdomain.org -s'testinggg' root
CentOS 5.5 では、ドメインからデフォルトを設定する最も簡単な方法は、hosts ファイルを変更することです。hosts ファイルに WAN/パブリック IP アドレスが含まれている場合は、そのアドレスにリストされている最初のホスト名を変更するだけです。たとえば、hosts ファイルは次のようになります。
...
11.22.33.44 ローカルホストのデフォルトドメイン その他何でも.com
...
anything-else.com から送信させるには、everyther-else.com が最初にリストされるように変更するだけです。たとえば、次のようになります。
...
11.22.33.44 その他何でも.com ローカルホストのデフォルトドメイン
...
他のディストリビューション (または CentOS のバージョン) について話すことはできませんが、私の特定のケースでは、上記は完全に機能します。
エコー「テスト」| mailx -r fake@example.com -s 'test' email@example.com
OpenBSD で動作します。
カスタムの返信先アドレスを設定できるようになった理由 Ubuntu 16.04
と UTF-8
エンコーディングと添付ファイル:
メールクライアントをインストールします。
sudo apt-get install heirloom-mailx
SMTP 構成を編集します。
sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
AuthUser=???@gmail.com
AuthPass=???
UseSTARTTLS=YES
メールを送信します:
sender='send@domain.com'
recipient='recipient@domain.com'
zipfile="results/file.zip"
today=`date +\%d-\%m-\%Y`
mailSubject='My subject on the '$today
read -r -d '' mailBody << EOM
Find attached the zip file.
Regards,
EOM
mail -s "$mailSubject" -r "Name <$sender>" -S replyto="$sender" -a $zipfile $recipient < <(echo $mailBody)
上記の解決策はどれも私にとってはうまくいきません...
#!/bin/bash
# Message
echo "My message" > message.txt
# Mail
subject="Test"
mail_header="From: John Smith <john.smith@example.com>"
recipients="recipient@example.com"
#######################################################################
cat message.txt | mail -s "$subject" -a "$mail_header" -t "$recipients"
以前に提供された回答は CentOS5 では機能しませんでした。マットをインストールしました。たくさんのオプションがあります。Mutt を使用すると、次のようになります。
export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org