個人用アドレス帳からインポートした配布リストに送信すると WINMAIL.DAT ファイルが添付される


Outlook により、個人用アドレス帳 (以下、PAB) からインポートした配布リストを使用してメッセージを送信した場合、一部のメンバーに WINMAIL.DAT が添付されたメッセージが送信されることがあります。

この現象は PAB からインポートされるエントリーの順番に依存して発生します。
例えば、PAB に Alice、Bob という連絡先とこの二つの連絡先をメンバーとして含む All Users という配布リストが含まれていたとします。
この場合、以下の順序で Outlook の連絡先にインポートされます。

  1. Alice 
  2. All Users
  3. Bob

そして、All Users のインポートの際、Alice はすでに連絡先にインポート済みであるため、連絡先上の Alice  とリンクされます。しかし、Bob は All Users がインポートされる際にはまだ連絡先に存在しないため、Bob は連絡先のアイテムとリンクされず、One-Off のアドレスとして登録されます。そして、この One-Off のアドレスの属性では元の PAB のエントリの状況に関わらず [Outlook リッチテキスト形式で送信する] が有効となっています。
そのため、All Users をあて先に指定してメッセージを送信すると、Alice には自動的に最適な形式が選択されてメッセージが送信されますが、Bob には WINMAIL.DAT ファイルが添付されたメッセージが送信されます。

この現象は Outlook 2003 以前でも発生しますが、Outlook 2007 では PAB がサポートされなくなり、PAB のインポートが必須となったため、このような状況に陥りやすいといえます。
また、Outlook 2007 では、上記のようにインポートされた配布リストで、実際にはリンクされていないメンバーをダブルクリックして表示すると、自動的に連絡先が検索され、一致する連絡先アイテムが表示されます。
検索された連絡先アイテムのアドレスのプロパティでは [インターネット メール形式] が [最適な送信形式を自動的に選択する] に設定されているため、ユーザーにはリッチテキスト形式が選択されているようには見えず、設定を変更することもできません。
したがって、手作業でこれを修正する場合、問題が発生するメンバーを一度配布リストから削除し、改めて追加する必要があります。

以下のような VBScript により、連絡先のすべての配布リストのエントリを名前解決し、連絡先フォルダのアイテムとリンクさせることができます。
なお、連絡先フォルダに似た名前の連絡先アイテムが存在したり、対応する連絡先アイテムが無かった場合は One-Off のアドレスとして再作成されますが、このアドレスでは [インターネット メール形式] が [最適な送信形式を自動的に選択する] になっています。
また、このスクリプトを実行する際には、プログラムが電子メール アドレス情報にアクセスしているという警告メッセージが表示されるため、[アクセスを許可する時間] で 1 分を指定し、[許可] をクリックする必要があります。(連絡先のアイテム数によってはより長い時間を指定する必要があります。)

' ここをトリプルクリックでマクロ全体を選択できます。
Const olFolderContacts = 10
im appOutlook
Dim nsSession
Dim fldContact
Dim dlItem
Dim i
Dim j
Dim recMember
Dim recNewMember
'
Set appOutlook = CreateObject("Outlook.Application")
Set nsSession = appOutlook.GetNamespace("MAPI")
nsSession.Logon
Set fldContact = nsSession.GetDefaultFolder(olFolderContacts)
For i = fldContact.Items.Count To 1 Step -1
    Set dlItem = fldContact.Items(i)
    If dlItem.MessageClass = "IPM.DistList" Then
        For j = dlItem.MemberCount To 1 Step -1
            Set recMember = dlItem.GetMember(j)
            Set recNewMember = nsSession.CreateRecipient(recMember.Name)
            If recNewMember.Resolve() = False Then
                Set recNewMember = nsSession.CreateRecipient(recMember.Name & "<" & recMember.Address & ">")
                recNewMember.Resolve
            End If
            dlItem.RemoveMember recMember
            dlItem.AddMember recNewMember
        Next
        dlItem.Save
    End If
Next

マクロの登録方法やメニューへの追加について

個人用アドレス帳からインポートした配布リストに送信すると WINMAIL.DAT ファイルが添付される」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中