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




ディスカッション
コメント一覧
まだ、コメントがありません