添付ファイル(PDFファイルとしての請求書)が追加の確認やポップアップなしで自動的に印刷されるように、Thunderbirdで受信メールをフィルタリングしたいと思います。
電子メールの本文は印刷せず、添付のpdfファイルのみを印刷してください。
添付ファイルの自動印刷を実現する方法はありますか?
FilterQuilla を使用してみましたが、これを使用すると、電子メール自体のみを印刷でき、添付ファイルは印刷できません。
ここスーパーユーザーには 関連する質問 がありますが、手動で選択したメッセージのすべての添付ファイルを一括/バッチ印刷するように求められます(回答はありません)。 1つの送信者の電子メールアドレスからのすべての受信電子メールの添付ファイルを具体的に印刷したいと思います。
Thunderbirdベースのソリューションがあればいいのですが、これは必須ではありません。 Thunderbirdでいくつかのフィルターを使用し、電子メールを別の電子メールアドレスに転送して、別の製品からアクセスすることはまったく問題ありません。
ちなみに、私はフリー/オープンソースソリューションを好みます。
これが問題に対する私の解決策であり、他の答えのいくつかの側面を組み合わせ、それらの制限を克服しています。
このソリューションの利点:
このアプローチは、いくつかのステップを組み合わせたものです。
すべてのメールはThunderbirdで Filtaquilla (2019年の時点でThunderbird 52.0-60。*で利用可能)でフィルタリングされます。電子メールの送信者と件名をフィルタリングすると、今のところ十分な「セキュリティ」が提供されます。電子メールはIMAPサブフォルダーに移動されます(何か問題が発生した場合に後で検査するためのアーカイブとして)。 Filtaquillaは、指定されたフォルダー(_C:\invoices
_)へのすべての添付ファイルを抽出します。 Filtaquillaでは、添付ファイルの抽出がデフォルトで有効になっていません。必ずFiltaquillaの設定を確認してください。
次のprint.pywを_C:\invoices
_に配置します。
_import os
import subprocess
import sys
import glob
import time
foxit = "C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"
script_dir = os.path.dirname(os.path.realpath(__file__))
# get all pdf files
pdf_files = glob.glob(script_dir + "/*.pdf")
# print each pdf and delete it
for pdf_file in pdf_files:
command = []
command.append(foxit)
command.append("/p")
command.append("/h")
command.append(pdf_file)
proc = subprocess.Popen(command, stdout=subprocess.PIPE)
time.sleep(10)
os.remove(pdf_file)
_
原則として、print.pywファイルはFiltaquillaで実行できます。ただし、フィルターが複数の電子メールを検出した場合、抽出されたpdfファイルが複数回印刷される可能性があります。
これを克服するには、スケジュールされたタスク(アクション:プログラムの実行)が役立ち、10分程度ごとに実行されます。
"C:\Program Files (x86)\Python36-32\pythonw.exe"
"C:\invoices\print.pyw"
_C:\invoices\
_run inフィールドに引用符がないことに注意してください。引用符がない場合、スクリプトは実行されません。また、スクリプトと抽出されたファイルがネットワークドライブにないことも重要です。
電子メールサーバーがIMAPを使用する場合は、2段階のソリューションを使用できます。
最初のステップとして、 Mail Attachment Downloader Free Edition などの無料の製品を使用できます。
メール添付ファイルダウンローダーは、検索設定に基づいて、すべてのメール添付ファイルを一度に安全にダウンロードして処理します。すべてのメールをサーバーに残します。メールのダウンロードに現在使用している他のメールプログラムに干渉することはありません。サイズ、ファイルタイプ、送信元、電子メールの件名、日付とタイムスタンプなどのさまざまなフィルターを設定して、ダウンロードするものを指定できます。
2番目の手順では、添付ファイルが指定されたフォルダーに保存されたら、次のPowerShellワンライナーを使用してすべてのファイルを印刷できます。
Get-ChildItem -Path 'C:\Temp\tmp2' -File | ForEach-Object { Start-Process -FilePath $_.Fullname -Verb Print -PassThru | %{sleep 10}}
上記には、Print動詞をサポートするPDF製品がインストールされている必要があります。たとえば、無料の Foxit Reader で、グラフィカル環境(ログイン)は必要ありません。
このPowerShellスクリプトは、.ps1
ファイルに保存し、タスクスケジューラで定期的に実行するようにスケジュールできます。
Adobe Readerを使用している場合は、印刷後も最新バージョンが開いたままになることがあります。これは、スクリプトを次のように変更することで解決できます。
Get-ChildItem -Path 'C:\Temp\tmp2' -File | ForEach-Object { Start-Process -FilePath $_.Fullname -Verb Print -PassThru | %{sleep 10;$_} | kill}
Save Attachments To
をチェックして、そのフォルダを指定しますRun Program
をチェックし、そのバッチ/スクリプトファイルを指定しますこのための商用ソフトウェアは確かに存在するため、購入すればリクエストは非常に可能で簡単です。オープンソースは可能性が高いですが、上記よりも複雑です。始めるためのリンクは次のとおりです。 https://blog.thomashampel.com/blog/Tomcat2000.nsf/dx/print-email-attachments-with-a-raspberrypi.htm - https://ubuntuforums.org/showthread.php?t=935489
私が心配している問題は、メールクライアントがない場合、スパム/ジャンクをどのようにフィルタリングして印刷しないかということです。また、抽出添付ファイルが感染を引き起こす可能性があることを少し心配していますが、私はただ妄想しているだけかもしれません。
以下のような(かなり小さい)pythonスクリプトを使用すると、指定した送信者から最初のメッセージを接続して取得し、メッセージを標準出力に出力できます。次に、munpack
(Debianのパッケージmpack
)添付ファイルを取得して処理できます。
メッセージの解析も実行できます Pythonの場合 つまり、mpack
は不要であり、ソリューションはより多くの環境に移植できます。
完了時にメッセージを削除したり、他のタイプの検索を実行したりするなど、その他のオプションについては imaplib を確認してください。
import getpass, imaplib
M = imaplib.IMAP4("yourserver")
M.login("user","password")
M.select("INBOX")
typ, data = M.search(None, 'from','your_sender')
num = data[0].split()[0]
typ, data = M.fetch(num, '(RFC822)')
print 'Message %s\n%s\n' % (num, data[0][1])
M.close()
M.logout()