Outlook 開封確認メールが配信されない(VBA)
Outlook(2013, 2016, 2019)を使用している環境で、相手から「開封確認の要求」されたメールを受信し、開封したにもかかわらず配信されないケース。
送信者(開封したことを通知する側)と受信者の間にあるMTA(メールサーバー)で、Disposition-Notification-ToがNULLの場合に、そのメール配信を停止するMTAがあると発生。
<開封通知に関しての仕様>
Outlook:"Disposition-Notification-To:NULL"をつけて開封通知メールを送信
他のメーラー:"Disposition-Notification-To"を削除して開封通知メールを送信
<発生の仕組み>
A:開封確認の要求、メーラー:任意
B:開封通知、メーラー:Outlook使用
Step.1
A:開封確認要求("Disposition-Notification-To:Aのメールアドレス")を付けたメールをBに送信
Step.2
B:AのメールをOutlookで受信
Step.3
B:Aに対し、開封通知メールを自動送信("Disposition-Notification-To:NULL"を付加)
Step.4
MTAの一部において、"Disposition-Notification-To:NULL" があるメールを廃棄
Step.5
B:Bは開封確認要求に対して開封通知をしたことになっているが、Aにはそれが届かない
VBAをつかった解決方法
VBAをつかい、"Disposition-Notification-To" がついたメールは、開封通知をする/しないの選択に関わらず自動で所定のメールを返信する。
' Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) On Error Resume Next Dim objItem As Object Set objItem = Session.GetItemFromID(EntryIDCollection) If objItem.MessageClass = "IPM.Note" Then Dim msgItem As MailItem Set msgItem = objItem AutoReply msgItem End If End Sub ' ' Private Sub AutoReply(msgItem As MailItem) Dim userProp As UserProperty ' 自分からのメールには返信しない If LCase(msgItem.SenderEmailAddress) = LCase(Session.CurrentUser.Address) Then Exit Sub End If ' If msgItem.ReadReceiptRequested Then Dim objReply As MailItem Set objReply = msgItem.Reply objReply.Body = "以下のメールを受信しました。" & vbCrLf & _ "送信日時:" & msgItem.SentOn & vbCrLf & _ "件 名:" & msgItem.Subject & vbCrLf & _ "Disposition-Notification-To:" & msgItem.ReadReceiptRequested objReply.Send ' カスタム プロパティに返信済みと設定 Set userProp = msgItem.UserProperties.Add("自動返信", olText) userProp.Value = "Done" msgItem.Save End If End Sub
ディスカッション
コメント一覧
まだ、コメントがありません