背景:
毎日、既知の送信者から電子メールメッセージを受け取ります。送信者は電子メールメッセージに添付ファイルを入れます。その添付ファイルをpythonスクリプトで処理する必要があります。
質問:
Outlookからシェルアカウント(またはローカルファイルシステム)に添付ファイルを取得して、毎日手動でファイルを開いて添付ファイルを保存しなくても、スクリプトで処理できるようにするための最良の(自動)方法は何ですか?
Outlookが通信しているExchangeサーバーがあると思います。サーバーでIMAPが有効になっていますか?もしそうなら、過去24時間以内に受信した特定の送信者からの電子メールをIMAPサーバーで検索し、MIME添付ファイル(私が想定しているもの)を解析するプログラムを作成するのはかなり簡単なはずです。
同じことを調べていて、台本を見つけました。
このコードをコピーして貼り付けます。
(注: "Const save_path As String =" c:\ Temp\""( "c:\ Temp \"をファイルサーバーへのパスに置き換えます。パスは常に "\"で終了することを忘れないでください)
Sub SaveToFolder(MyMail As MailItem)
Dim strID As String
Dim objNS As Outlook.NameSpace
Dim objMail As Outlook.MailItem
Dim objAtt As Outlook.Attachment
Dim c As Integer
Dim save_name As String
'Place path to sav to on next line. Note that you must include the
'final backslash
Const save_path As String = "c:\Temp\"
strID = MyMail.EntryID
Set objNS = Application.GetNamespace("MAPI")
Set objMail = objNS.GetItemFromID(strID)
If objMail.Attachments.Count > 0 Then
For c = 1 To objMail.Attachments.Count
Set objAtt = objMail.Attachments(c)
save_name = Left(objAtt.FileName, Len(objAtt.FileName) - 5)
save_name = save_name & Format(objMail.ReceivedTime, "_mm-dd-yyyy_hhmm")
save_name = save_name & Right(objAtt.FileName, 5)
objAtt.SaveAsFile save_path & save_name
Next
End If
Set objAtt = Nothing
Set objMail = Nothing
Set objNS = Nothing
End Sub
メニューのデバッグに移動し、コンパイルします...
高度なETLプロセッサは、さまざまなルールに基づいて、電子メールに自動的に返信し、添付ファイルを保存し、電子メールを処理できます。