件名に基づいて電子メールを読んだり、base64添付ファイルを取得したり、直接添付ファイルを入手することはできますか? サーバ:LinuxシステムLinuxのコマンドラインから添付ファイルを読む
答えて
あなたの質問は、単一の添付ファイルがあることと、確実に抽出できることを前提としているようです。一般的なケースでは、電子メールメッセージは基本的に無限の量の添付ファイルを持つことができ、エンコーディングはいくつかのうちの1つになる可能性があります。
しかし、私たちは、あなたが一貫して最初のbase64添付ファイルは常にあなたが望む1になるだろう、静的なメッセージテンプレートを使用して、単一の送信者を扱っていることを
case $(formail -zcxSubject: <"$message") in
"Hello, here is your report for "*)
awk 'BEGIN { h=1 }
h { if ($0 ~ /^$/) h=0 ; next } # skip headers
/^Content-Disposition: attachment/ { a=1 } # find att
a && /^$/ { p=1; next }
p && /^$/ { exit }
p' "$message" |
base64 -d ;;
esac
のようなものを想定する場合、これは解凍されますSubject:
ヘッダーを開き、それをグロブパターンと比較します。私はこれがあなたが "主題に基づいて"という意味であることを期待しています - 一致する件名を見つけたらこのメッセージを調べ、それ以外の場合は破棄してください。
粗いAwkスクリプトは、base64データを分離して抽出するためにbase64 -d
に渡そうとします。これには、メッセージフォーマットに関するいくつかの厄介なやや粗悪な仮定が含まれており、重大な追加の調整が必要になることがあります。簡単に言うと、ヘッダーをスキップして、添付ファイルを識別するMIMEヘッダーを探し、それを印刷して、メッセージ内のその他すべてをスキップします。このヘッダーが見つからないか、間違ったMIME部分を特定した場合、結果は得られません。また、/^Content-Disposition:/
正規表現は理論的にはMIMEヘッダーではない行にマッチする可能性があります(実際にはバウンスメッセージなどを見ていると実際に起こる可能性があります)。
もっと堅牢なアプローチには、実際にMIME構造を解析して必要な部分を抽出するためのMIME抽出ツールまたはカスタムスクリプトが必要です。あなたが必要とするものについての詳細がなければ、私はそれを提供することができません。
formail
は、RFC2047エンコーディングについては考えていないので、件名が平易なASCIIではない場合は、送信者の指定されたファイル名を使用することもできます(このスクリプトでは、スクリプトでエンコードされたフォームを指定する必要があります。
こんにちは、粗いAwkスクリプトは、base64データを分離して抽出のためにbase64 -dに渡そうとします。 - どうやってやるの?送信者、件名、添付ファイル名を抽出できます。私はbase64データの抽出に興味があります。 –
私はあなたの質問を理解していません。 Awkスクリプトの詳細についてもっと詳しく知りたいのですか、より多くの機能や異なる機能を備えたスクリプトが必要ですか? – tripleee
私は/ var/spool/mail/userファイルを読んでから、さまざまなテーマに基づいて添付ファイルの詳細を抽出する方法を理解したいと思います。 –
Gmailは、そのプロトコルをサポートする任意のクライアントを使用して電子メールを取得できるIMAPサービスを提供します。クライアントがディスク上で利用できるようにする方法はさまざまです。
最も広く使用されているコマンドラインIMAPクライアントはfetchmailでなければなりません。 Ubuntuに簡単にインストールしてから、gmailで使用する特定の設定についてgoogleを使用できます。
fetchmailの1つのことは、リモートサーバーからの電子メールをスローし、ローカルのMTAにパイプすることです。したがって、この設定が機能するには、ローカルで設定されたMTAが必要です。おそらくMTAは電子メールを/ var/mail/$ USERに追加し、このファイルを読んで処理することができます。
もう1つのツールはオフラインです。私はそれを使用していません。 fetchmailよりもセットアップが簡単です。
メールに添付されている添付ファイルを保存する必要がある場合は、mpackをインストールする必要があります。次に、電子メールごとに.txtファイルのmunpackコマンドを実行します(はい、添付ファイルのすべての不具合が含まれています)。添付ファイルをデコードして個々のファイルに保存します:
$ munpack mail.txt
Invoice.PDF (application/pdf)
my-picture.png (image/png)
- 1. 保護されたPDFから添付ファイルを読む
- 2. PHP/LinuxからFoxproファイル(.DBF)を読む
- 3. Rails 3 Apple Mail.appの添付ファイル付き電子メールを読む
- 4. IMAPで添付ファイル付きのメールを読むPHPクラス
- 5. コマンドラインからMailgunにファイルを添付するには?
- 6. xlsファイルを読む方法Content-Disposition:PHPの添付ファイル
- 7. Microsoft Exchange Webサービスを使用してメールから添付ファイルを読む
- 8. 添付ファイルからの添付ファイルの抽出
- 9. PHP S/MIMEメールを読むp7m添付ファイル(Base64?)
- 10. Javaのコマンドラインでファイルを読む
- 11. HTTP応答から添付ファイルを読み取る方法
- 12. 添付ファイルをMIME文字列から直接添付する
- 13. 添付ファイルを含むモデルoctoberCMS
- 14. 魅力の添付ファイルの添付ファイル
- 15. LinuxモジュールからEEPROMエントリを読む
- 16. linuxソケットから "varint"を読む
- 17. 添付ファイルを添付ファイルに追加
- 18. Bouncycastle - 添付ファイルからプログラムで添付ファイルを区別する方法
- 19. データベースレコードからjavaMail添付ファイルを送信
- 20. アクセス:添付ファイルから.vsdを表示
- 21. System.ServiceModel.Channels.Messageから添付ファイルを取得
- 22. HDFSからjavax.mailメールにファイルを添付
- 23. 添付ファイルからの取得
- 24. AccuWork/Accurevコマンドラインを使用して添付ファイルを追加する
- 25. WindowsコマンドラインとLinuxシェルから色付きのテキストをコピー
- 26. 電子メールの添付ファイルを読むためにアプリケーションを登録する
- 27. 特定のラベルを含むメールからすべての添付ファイルをダウンロード
- 28. ファイルからグレードを読む
- 29. ファイルからサブクラスを読む
- 30. txtからファイルを読む
'formail'プログラムを見てください。この質問はStackExchangeサイト[**スーパーユーザー**](http://superuser.com/)または[** ServerFault **](http://serverfault.com/) –
の方が適切かもしれませんコマンドラインのみを使用し、追加のユーティリティは使用しませんか? –
メッセージと添付ファイルがUUencodeされ、同じファイルの別々の部分としてインクルードされる方法に基づいてわかっているわけではありません。 (いくつかのフォーマットがありますが)。あなたは添付ファイルを読むことができるように添付ファイルを抽出してそれをuudecodeできるものが必要です。 (あなたが7ビットのASCIIを読まない限り)1行でそれを行うためにユーティリティの行を一緒にストリングすることができますが、それを行うために書かれたユーティリティを使うのが良いでしょう。 –