web-dev-qa-db-ja.com

ExchangeServerでの電子メールの添付ファイルの自動抽出

Exchange電子メールアカウントが作成されました。このアカウントを介して、3つの異なるExcel添付ファイルが付いた電子メールを毎日受信します。

各Excel添付ファイルは、3つの異なるフォルダーのいずれかに保存する必要があります。

これを自動的に行うようにExchangeServerを構成できますか、またはアカウントで新しい電子メールを監視するスクリプトをプログラムする必要がありますか?

Exchange2007サーバーだと思います。

2
lamcro

私は現在、この目的のためにpythonスクリプトを使用しています。これは、mailbow trought POP3にログインし、添付ファイルをダウンロードして電子メールをバックアップします。少しの変更で、ニーズに非常によく合う可能性があります。必要に応じてpy2exeでコンパイルできます。 コードはこちら

PS:このコードは元々Suresh Kesmarによって書かれました(彼のすべての功績);)

3
Maxwell

Outlookは自分自身からあなたを保護するのが好きなので、スクリプトを使用してこれを実行する必要があるのではないかと思います。以下の手順は ここ からのものです。 Excelスプレッドシートに適用するように少し変更しました。 Excel 2007からのものである場合は、スクリプトのファイル拡張子に「xlsx」を使用する必要があることに注意してください。

  1. Outlookを開きます。 Outlook 2007を使用していますが、これはOutlook2003でも機能するはずです。[ツール]> [マクロ]> [VisualBasicエディター]に移動します。
  2. プロジェクトフォルダが強調表示された状態で(左上の[プロジェクト]ペイン。デフォルトのプロジェクトを使用しました)、右クリックして[挿入]> [モジュール]を選択します。次のコードをコピーして、エディターのメインウィンドウに貼り付けます。
[vb]Sub SaveAttachmentsToDisk(Item As Outlook.MailItem)

Dim olkFolder As Outlook.MAPIFolder, _

olkAttachment As Outlook.Attachment, _

objFSO As Object, _

strRootFolderPath As String, _

strFilename As String, _

intCount As Integer

‘Change the following path to match your environment

strRootFolderPath = "z:\www\departments\webreports\"

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set olkFolder = Application.ActiveExplorer.CurrentFolder

If Item.Attachments.Count > 0 Then

For Each olkAttachment In Item.Attachments

If objFSO.GetExtensionName(LCase(olkAttachment.FileName))

= "xls" Then

strFilename = olkAttachment.FileName

intCount = 0

Do While True

If objFSO.FileExists(strRootFolderPath &

strFilename)次に

intCount = intCount + 1

objFSO.deletefile (strRootFolderPath & strFilename)

Else

Exit Do

End If

Loop

olkAttachment.SaveAsFile strRootFolderPath & strFilename

End If

Next

End If

Set objFSO = Nothing

Set olkAttachment = Nothing

Set olkFolder = Nothing

End Sub[/vb]
  1. スクリプトを適切に処理するには、適切なセキュリティレベルが設定されていることを確認する必要があります。 Outlookで、[ツール]> [マクロ]> [セキュリティ]に移動します。マクロのセキュリティチェックなしを選択しました。これは、環境の制限が緩すぎる可能性があります。その場合は、次に高い設定を試してください。

  2. 変更を反映するために、新しいOutlookルールを作成します([ツール]> [ルールとアラート])。私のルールは、特定の電子メールアドレスから新しいメッセージを探し、添付ファイル(移動するWebファイル)を持ち、メッセージを特定のフォルダーに移動し(メッセージ/添付ファイルのバックアップを作成できるようにするため)、上記のモジュール/スクリプトを使用して、Webファイルを適切なSamba共有に移動します。ルールの説明は次のようになります。

Apply this rule after the message arrives
from [email protected]  
and which has an attachment  
and on this machine only  
move it to the WEBBACKUP folder  
and run Project1.SaveAttachmentsToDisk
  1. [適用]と[OK]を押して、ルールを保存します。いくつかの注意点:これはクライアント側のルールであるため、ルールを処理するにはOutlookを実行し続ける必要があります。また、コードは、添付ファイルと同じ名前のファイル(私の場合はターゲットのSamba共有内)を上書きします。コピーのみを作成したい場合は、添付ファイル名に番号を追加できます。これを行うには、次のコード行を置き換えます。

objFSO.deletefile(strRootFolderPath&strFilename)

strFilename = "Copy("&intCount& ")of"&olkAttachment.FileName

2
GregD