takashi kono's blog

コーヒーとキーボードと共に何かを記録していくブログ

curl を使ったメール送信の手順とコマンド例

目的

curl でメールが送れるらしいのでメモしておく

参考

takuya-1st.hatenablog.jp

everything.curl.dev

メモ

メールの内容を準備する

$ cat mail.txt
TO: target-mail-addr@example.com
FROM: mail-from-addr@example.net
Subject: This is subject

This is mail body

メールを送るスクリプトの準備する(コマンドを直接実行でもよい)

$ cat mail-sender.sh
curl -sSv \
   --ssl smtps://smtp.example.net:465 \
   --mail-from mail-from-addr@example.net \
   --mail-rcpt target-mail-addr@example.com \
   --user "mail-from-addr@example.net:MAIL_PASSWORD" \
   --upload-file mail.txt

-sSv は任意
--upload-file , -T で指定するファイルは、添付ファイルではなく、メールの本文及び、送信元、宛先、件名を書き記したファイルを指定するためにある

実行

手抜き

bash mail-sender.sh

--upload-file を使わず、 echo で渡す

事もできるのでメモ

echo 'TO: target-mail-addr@example.com
FROM: mail-from-addr@example.net
Subject: This is subject

This is mail body
' |\
curl -sSv \
   --ssl smtps://smtp.example.net:465 \
   --mail-from mail-from-addr@example.net \
   --mail-rcpt target-mail-addr@example.com \
   --user "mail-from-addr@example.net:MAIL_PASSWORD" \
   --upload-file -

パイプでつなげるだけ
とてもいい!


2024-01-15 追記

複数人に送る

curl にだけ宛先を記載する

内容に宛先を一つ、 curl に宛先を二つ記載すると、受け取りては二人だが、そのメールの中身の宛先は1つ

$ cat mail.txt
TO: target-mail-addr1@example.com
FROM: mail-from-addr@example.net
Subject: This is subject

This is mail body

curl

$ cat mail-sender.sh
curl -sSv \
   --ssl smtps://smtp.example.net:465 \
   --mail-from mail-from-addr@example.net \
   --mail-rcpt target-mail-addr1@example.com \
   --mail-rcpt target-mail-addr2@example.com \
   --user "mail-from-addr@example.net:MAIL_PASSWORD" \
   --upload-file mail.txt

両方にアドレスを記載する

両方に記載すると、どちらにも届くし、メールの内容の宛先にも宛先が両方記載される

$ cat mail.txt
TO: target-mail-addr1@example.com, target-mail-addr2@example.com
FROM: mail-from-addr@example.net
Subject: This is subject

This is mail body

curl

$ cat mail-sender.sh
curl -sSv \
   --ssl smtps://smtp.example.net:465 \
   --mail-from mail-from-addr@example.net \
   --mail-rcpt target-mail-addr1@example.com \
   --mail-rcpt target-mail-addr2@example.com \
   --user "mail-from-addr@example.net:MAIL_PASSWORD" \
   --upload-file mail.txt

curl で宛先を一つしか書かない

1か所にしか飛ばない