UNIX mailxコマンドを使用して電子メールを送信するにはどうすればよいですか?


91

UNIX mailxコマンドを使用して電子メールを送信するにはどうすればよいですか?

回答:


108

$ echo "something" | mailx -s "subject" recipient@somewhere.com

添付ファイルを送信する

$ uuencode file file | mailx -s "subject" recipient@somewhere.com

添付ファイルを送信し、メッセージ本文を書き込む

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com

4
試してみましたが無反応です。エラーメッセージが表示されることも、myname @ gmail.comにメールが送信されることもありません。サーバー構成は必要ですか?
user269484

2
設定は必要ありません。インターネット接続を確認してください。私はケーブルを介してインターネットに直接接続しています。プロキシなどは使用しないので、私の側で機能します。
ghostdog74 2010

2
また、受信トレイでエラーメッセージを確認してください。すなわち実行しmailます。
hafichuk

2
ただし、uuencodeこれは過去のミレニアムのレガシーテクノロジーであり、現在の「添付ファイル」が意味するものを生み出していないことに注意してください。基本的には、機械で読み取り可能なごちゃごちゃした部分をメッセージテキストの最後に配置します。この時代では、適切にMIME対応のメーラーを使用するほうがよいでしょう。残念ながら、mailxMIME機能で普遍的にサポートされている代替はありませんが、がある場合mutt、それはおそらく最も抵抗の少ない経路です。
tripleee 2014年

5
@ user269484 Gmailは不正なIPアドレスからのメールを受け付けません。support.google.com/mail/answer/10336
Manas Jayanth 2016年

33

はい、どうぞ :

echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"

PS。本文と件名は二重引用符で囲む必要があります。電子メールアドレスの置換中FROM_EMAILおよびTo_EMAIL置換中に引用符を削除します。


1
Macでは、-r mailx:不正なオプション-rを使用すると、mailxコマンドからエラーを受け取ります。使用法:mailx [-EiInv] [-s subject] [-c cc-addr] [-b bcc-addr] [ -F] to-addr ... mailx [-EHiInNv] [-F] -f [name] mailx [-EHiInNv] [-F] [-u user] mailx -e [-f name] mailx -H
jcpennypincher

-S from=a@b.com
Kalpesh Soni

6
mailx -s "subjec_of_mail" abc@domail.com < file_name

mailxユーティリティ、私たちはからファイルを送信することができますunixしますmail server。上記のコードでは-s "subject of mail" 、最初のパラメーターが2番目のパラメーターmail IDで、最後のパラメーターが添付するファイルの名前です。


1
これはファイルを添付せず、ファイルのコンテンツを本文に挿入します
Guus

5
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress

-cと-bはオプションです。

-s:件名を指定します。件名にスペースが含まれている場合は、引用符を使用します。

-c:コンマで区切られたユーザーのリストにカーボンコピーを送信します。

-b:ブラインドカーボンコピーを、カンマで区切られたユーザーのリストに送信します。

私の答えがあなたの疑問を明確にしてくれることを願っています。


5

MUTTコマンドで高速化

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c cc_mail@g.com to_mail@g.com -y
  1. -cメールccリスト
  2. -s件名リスト
  3. -yメールを送信する

4

manページから:

メール送信

1人または複数の人にメッセージを送信するには、メールの送信先となる人の名前を引数としてmailxを呼び出すことができます。次に、ユーザーはメッセージを入力し、その後に行頭に「control-D」を入力する必要があります。

言い換えると、mailxは送信するコンテンツを標準入力から読み取り、通常のようにリダイレクトできます。例えば:

ls -l $HOME | mailx -s "The content of my home directory" someone@email.adr

3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" abc.xyz@google.com,   \
              cde.mno@yahoo.com, \ < open_files.log

1

FROMアドレスのカスタマイズ

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM

manメールからの例外:-f [file]処理のためにユーザーのmbox(または指定されたファイル)の内容を読み込みます。mailxが終了すると、削除されていないメッセージがこのファイルに書き込まれます。文字列ファイルは、以下のfolderコマンドで説明されているように処理されます。
ZJリュー2017年

使用しているバージョンによって異なります。異なるオプションを持つ複数の非互換の競合mailおよびmailxコマンドがあります。
tripleee

1

以下は、複数の添付ファイルを使用したメール送信に取り組むための多機能機能です。

enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}

関数呼び出し:enviaremail "smtp.mailserver:port" "from_address" "authuser" "'pass'" "destination" "list of attachments attachted by space"

注:呼び出しで二重引用符を削除してください

さらに、関数を使用する前に、メールの$ titulo(件名)と$ cuerpo(本文)を外部で定義することを忘れないでください。


0

2人以上またはDLを送信する場合:

echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com

ここに:

  • -s =件名またはメールのタイトル
  • -r =送信者のメールまたはDL

エコーがメッセージ本文を渡すために使用される理由を説明できますか?これを省略してMailXから実行すると、入力待ちのようにカーソルが点滅します。
LonelyRogue
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.