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


25

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

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

mail -a myfile.txt -t me@example.com -s "Here's my file"

1
デフォルトのubuntuコマンドラインメールユーザーエージェントmail(別名mailx)はMIME無知であるため、1980年以外の方法で添付ファイルを処理することはできません。これはいい質問です。標準的なCanonical MUAを探しています。もっと来る。
msw

回答:


18

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

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

mutt -a myfile.txt -s "Here's my file" -- me@example.com

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

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

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

一つは、また、その言うことができるのxdg-電子メールは、適切UbuntuのMUAですが、それだけで実行最低限のフロントエンドでお好みのMUAをあなたに代わって。

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


素晴らしい質問、ありがとう。私の箱でメールが機能するように促されました。nullmailer MTAを使用してISPにやみくもにリレーし、サンプルのmuttコマンドは広告どおりに機能しました。ちなみに、nullmailerには偽のsendmailフロントエンドがあり、sendmailと対話することを期待するほとんどのプログラムは、私からの労力なしで実際のMTAにシャッフルされます。
msw

msw、exim4が唯一の標準サポートであると主張している理由がよくわかりません。postfixもメインにあり、ubuntu-serverインストールからメールサーバータスク選択を選択すると有効になります。exim4はdebianのデフォルトMTAであり、以前はパッケージ化の設定によりデフォルトで取り込まれていましたが、しばらくの間、Ubuntuではpostfixが間違いなく優先されるMTAであると思います。
スティーブビーティー

また、(MIME非対応の)MUAとしてbsd mail / mailxを使用した場合、実際にメールを送信するには何らかの種類のMTAが必要になることに注意してください。とにかく、Muttの方が適しています。:
スティーブビーティー

11

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

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

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

mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt 

ただし、以下と同じファイルを添付ファイルとして送信することはできません

mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt

または:

mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

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

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

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

更新:201808

添付ファイルの-aオプションが大文字 -Aに変更されたようです。-aヘッダを変更するように思わDOC


優れた!ありがとう。私は.zshrc誰かにファイルをmail送信しようとしていましたが、クイックメッセージを送信するために多くを使用していましたが、添付ファイルを送信しようとしても機能しませんでした。引数の順序が非常に重要であることを認識できることを確認する必要がありました。これは私のために働いた:mail -s "zshrc" -a ~/.zshrc username@example.com...もちろん、私はまだメッセージ本文を入力ctrl+dし、最後の空白行にヒットしなければなりませんでした。
カールウィルバー

を使用mail username@example.com -a ~/.zshrcすると、メッセージは送信されますが、ファイルは送信されないという点で「機能」しました。私が試しmail username@example.com -a ~/.zshrc -s 'zshrc'たなら、受信者アドレスの後のパラメータが無視されていることは明らかだったでしょう。
カールウィルバー

@Masoud lnkが壊れています...それを更新したかったのですが、どのドキュメントを提供したかをよく知っているので、私はあなたにそれを許可しました
フィリップガチュー

6

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

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

mail -s "your subject" you@gmail.com -A /your/attachment/absolute/path < /home/you/message.txt

オプションはCAPITAL attachment-Aある必要がありますA


3

シェルからファイルを送信することもできますが、それ以外の場合はThunderbirdを使用します

この場合、try thunderbird -remote ...は便利です-thunderbirdが通常実行されていると仮定すると:

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

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

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='/some/absolute/file.txt')"

2つの問題があります。

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

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',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' test@example.com 'Body of message' file1

サンダーバードの「書き込み」ウィンドウが開き、添付ファイル、From、To、Subject、および本文が入力されます。送信前に編集できます。


2

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

 mailx -a attachment.zip -s subject rctp@domain.to

1
これは私が必要としていなかったものでした。RH-類似品に含まれているが持っている添付ファイルのために、しかし、Debianの-類似品に含まれる1つはそうではありません。mailmailx-a
-DopeGhoti

0

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

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.