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




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