web-dev-qa-db-ja.com

mail:コマンドラインから添付ファイル付きのメールを送信します

コマンドラインからスクリプトを送信する方法を知っています(スクリプト)

echo "body" | mail -s "subject" [email protected]

コマンドライン(スクリプト)からも添付ファイルを送信できますか?

使っています heirloom-mailx Debian Wheezy。

9
Martin Vegter

簡単な方法:uuencodesharutilsパッケージの一部)を使用する。書式設定や本文テキストは使用できません。添付ファイルとカスタムの件名を含む単なるメール。

uuencode /path/to/file file_name.ext | mail -s subject [email protected]

複雑な方法:sendmailとhtml形式を使用するには:

v_mailpart="$(uuidgen)/$(hostname)"
echo "To: [email protected]
Subject: subject
Content-Type: multipart/mixed; boundary=\"$v_mailpart\"
MIME-Version: 1.0

This is a multi-part message in MIME format.
--$v_mailpart
Content-Type: text/html
Content-Disposition: inline

<html><body>Message text itself.</body></html>

--$v_mailpart
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream; name=file_name.ext
Content-Disposition: attachment; filename=file_name.ext

`base64 /path/to/file`
 --$v_mailpart--" | /usr/sbin/sendmail -t

複数のアタッチメントがある場合、最後の部分が繰り返されることがあります。

20
rush

muttの代わりにmailを使用すると、簡単に

echo "body" | mutt -s "subject" -a attachment0 attachment1 [...] -- [email protected]

ここで、attachmentNは、添付するファイルのリストです。

13
tkrennwa