Outlookで自社ドメイン以外のメールアドレスが含まれていた場合に確認メッセージを表示するマクロ

samatsu 2/8/2017 6284 N/A Outlook

Outlookご送信防止策として、自社ドメイン以外のドメインがメールアドレスに含まれていた場合に警告メッセージを送付するマクロを作成しました。まったくオリジナルではなく、ここので紹介されていたマクロを参考に自分の要件にマッチするようにカスタマイズしました。

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
 Const MY_DOMAIN = "*@sample.net" ' 自組織のドメイン名を指定。@ の前に * を付ける
 Dim objRec As Recipient
 Dim bOut As Boolean
 Dim bExternal As Boolean
 Dim strOut As String
 Dim iRet As Integer
 ' 組織外の受信者が複数存在するかどうかの確認
 bMixed = False
 strOut = ""
 str1stDomain = ""
 For Each objRec In Item.Recipients
    If objRec.AddressEntry.Type <> "EX" Then
        If Not objRec.Address Like MY_DOMAIN And InStr(objRec.Address, "@") > 0 Then
           strOut = strOut & objRec.Address & ";"
           bExternal = True
        End If
    End If
 Next
 ' 組織外の受信者が複数含まれていた場合の処理
 If bExternal Then
    iRet = MsgBox("あて先に複数のドメインのメールアドレスが含まれています。送信しますか?" & _
                    vbCrLf & "外部ドメイン宛: " & strOut, vbYesNo, "送信確認")
     Select Case iRet
            Case vbYes
                ' 送信日時を 1 分後に設定
                Item.DeferredDeliveryTime = DateAdd("n", 1, Now)
                Cancel = False ' 念のため
            Case vbNo
            Cancel = True
    End Select
 End If
End Sub

マクロを登録する方法は、参考にさせていただいたサイトのこのページを利用すればOKです。

ただし、自己署名のデジタル証明書作成ツールはページに指定された方法で見つけられなかったので、Office 2016の場合は、C:\Program Files (x86)\Microsoft Office\root\Office16\SELFCERT.EXE を直接実行します。