curlはかなり多機能で実はメールを送ることも出来る。
helpからメールに関すると思われるオプションを探すとぱっと見ただけでもこんなにある。
1 2 3 4 5 6 7 8
| $ curl --help | grep -i -e mail -e smtp --login-options OPTIONS Server login options (IMAP, POP3, SMTP) --mail-from FROM Mail from this address (SMTP) --mail-rcpt TO Mail to this/these addresses (SMTP) --mail-auth AUTH Originator address of the original email (SMTP) --oauth2-bearer TOKEN OAuth 2 Bearer Token (IMAP, POP3, SMTP) --ssl Try SSL/TLS (FTP, IMAP, POP3, SMTP) --ssl-reqd Require SSL/TLS (FTP, IMAP, POP3, SMTP)
|
なお本文は -T
オプションで指定する模様。
1
| -T, --upload-file FILE Transfer FILE to destination
|
シンプルにメールを送る例
1 2
| echo -e "From: yourname@example.com\nTo: receiver@example.net\nSubject: test\n\ntest" | curl --mail-from yourname@example.com --mail-rcpt receiver@example.net -T - smtp://(対向のMX):25
|
SMTP Authする場合
1 2
| echo -e "From: yourname@example.com\nTo: receiver@example.net\nSubject: test\n\ntest" | curl --user "youraccount:yourpassword" --mail-from yourname@example.com --mail-rcpt receiver@example.net -T - smtp://smtp.your-smtp.server:25
|
さらにSMTPSを使う場合
1 2
| echo -e "From: yourname@example.com\nTo: receiver@example.net\nSubject: test\n\ntest" | curl --user "youraccount:yourpassword" --mail-from yourname@example.com --mail-rcpt receiver@example.net -T - smtps://smtp.your-smtp.server:465
|
通信の詳細を確認したい場合
1 2 3 4
| echo -e "From: yourname@example.com\nTo: receiver@example.net\nSubject: test\n\ntest" | curl --user "youraccount:yourpassword" --mail-from yourname@example.com --mail-rcpt receiver@example.net \ --verbose \ -T - smtps://smtp.your-smtp.server:465
|
サーバ証明書の検証をしつつテスト環境のサーバに通信を向けたい場合
1 2 3 4 5
| echo -e "From: yourname@example.com\nTo: receiver@example.net\nSubject: test\n\ntest" | curl --user "youraccount:yourpassword" --mail-from yourname@example.com --mail-rcpt receiver@example.net \ --verbose \ -- resolve smtp.your-smtp.server:465:$(dig +short smtp-test.your-smtp.server) \ -T - smtps://smtp.your-smtp.server:465
|
もちろん同じことはpythonやrubyなどのスクリプトで出来る。
しかし勝手知ったるcurlのお作法そのままでメール送信が出来るのはとても便利なのだ。