web-dev-qa-db-ja.com

コマンドラインから添付ファイルをメールで送信するにはどうすればよいですか

コマンドラインから添付ファイルをメールで送信することはできますか?

可能であれば、次のようなシンプルなものが欲しいです。

mail -a myfile.txt -t [email protected] -s "Here's my file"
25
conorgriffin

Ubuntuリポジトリ内のすべてのメールユーザーエージェントのうち、 mutt は長期サポートに恵まれているコマンドラインMUAであるようです。

マニュアル によれば、次のようなことができます。

mutt -a myfile.txt -s "Here's my file" -- [email protected]

ただし、メール転送エージェントも必要なため、どこにも移動しません。人気のあるものは:

  • 由緒あるsendmail
  • 接尾辞
  • exim4
  • qmail
  • nullmailer

canonicalがサポートしていると思われるものは、後置(Steveの修正に感謝)と exim4 だけです。

xdg-email も適切なUbuntu MUAであると言うことができますが、それはの優先MUAのみを実行するベアボーンフロントエンドですあなたに代わって。

どのMTAが使用に適しているかについてアドバイスが必要な場合は、ここで別の質問を開いてください。

18
msw

添付ファイルの送信にも問題がありました。添付ファイルなしでメールを送信した場合、成功しましたが、添付ファイルがありませんでした。この問題は、sendemailmuttmailmailxuuencodeコマンドに存在していました。

幸いなことに、面白く解決されました。メールの送信にGmailを使用しています。 http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html で宣言されているように、ターミナルでコマンドを使用してメールを送信するようにGmailを構成できます。

次を使用してテキストメールを送信できます。

mail -s "hello" [email protected] < /home/masoud/YOURFILE.txt 

ただし、次のように添付ファイルとして同じファイルを送信することはできません

mail -s "hello" [email protected] -a /home/masoud/YOURFILE.txt

または:

mail -s "hello" -a /home/masoud/YOURFILE.txt [email protected]

最後に、この形式のみが添付ファイルを送信できることを理解しました。

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt [email protected]

面白いことに、違いは「エコー」コマンドの存在です。

更新:201808

添付ファイルの-aオプションがUppercase-Aで変更されたようです。 -aは、 doc に従ってヘッダーを変更するためのようです

11
Masoud

コマンドとパラメーターが最近変更されたことがわかりました。

このコマンドで添付ファイルを送信する場合:

mail -s "your subject" [email protected] -A /your/attachment/absolute/path < /home/you/message.txt

オプションattachmentは、大文字のAである-Aでなければなりません。

6
Alex

ファイルを送信したい場合がありますシェルから、そうでなければThunderbirdを使用

この場合、Thunderbird -remote ...を試してください-Thunderbirdが通常実行されていると仮定すると:

このコマンドは、実行中のThunderbirdインスタンスのメール作成ウィンドウを開きます。
「差出人」アドレスは、Thunderbirdで設定されているデフォルトアドレスです。
また、既存のアカウント設定が使用されます。別のセットアップは必要ありません。

件名が「S」、本文が「B」、添付ファイルが[email protected]/some/absolute/file.txt宛てのメールの場合、コマンドは

Thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='/some/absolute/file.txt')"

2つの問題があります。

添付ファイルは絶対パスで指定する必要がありますが、これは実際には退屈です。これは、readlink -fを使用して相対パスを解決することで処理できます。

Thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='$(readlink -f file.txt)')"

また、コマンドは長くなります。 4つの引数を指定して、シェルスクリプトまたはシェル関数を使用します。

Thunderbird-compose () {
    Thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}

この関数を使用すると、コマンドが読み取り可能になります。

Thunderbird-compose 'Some Subject' [email protected] 'Body of message' file1

thunderbirdの「書き込み」を開きます添付ファイル付きのウィンドウ、およびFrom、To、Subject、および本文のテキストを入力します。送信前に編集済みにすることができます。

3
Volker Siegel

debianのheirloom-mailxパッケージは、MIME添付ファイルを簡単に送信するためのmailxコマンドを提供します。次は私のために働く;

 mailx -a attachment.Zip -s subject [email protected]
2
Furkan Mustafa

本文に添付ファイルを追加するために使用される別の回答を追加したいと思います。乾杯!!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- [email protected]
0
Anandu M Das