上記のコードを提供してくれた ojhhawkins に感謝します - 本当に便利です。MsgBox テキストに外部電子メール アドレスのリストを含めるために、簡単な繰り返しを行いました。
注意事項 - 他のプログラム (Excel、Adobe Reader など) で [電子メール添付ファイルとして送信] を使用すると、警告が表示されないことに気付きました。nitonが指摘したように:
Re:他のプログラムで電子メールの添付ファイルとして送信します。こちらの注意事項に記載Outlook の機能をバイパスします。」
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim recips As Outlook.Recipients
Dim recip As Outlook.Recipient
Dim pa As Outlook.PropertyAccessor
Dim prompt As String
Dim strMsg As String
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Set recips = Item.Recipients
For Each recip In recips
Set pa = recip.PropertyAccessor
If InStr(LCase(pa.GetProperty(PR_SMTP_ADDRESS)), "@example.com") = 0 Then
strMsg = strMsg & " " & pa.GetProperty(PR_SMTP_ADDRESS) & vbNewLine
End If
Next
If strMsg <> "" Then
prompt = "This email will be sent outside of example.com to:" & vbNewLine & strMsg & "Do you want to proceed?"
If MsgBox(prompt, vbYesNo + vbExclamation + vbMsgBoxSetForeground, "Check Address") = vbNo Then
Cancel = True
End If
End If
End Sub
このコードを実際に Outlook アプリケーションに追加するには:
- リボン バーに [開発者] タブが表示されない場合は、[ファイル] メニューの [オプション] に移動し、左側の[リボンのカスタマイズ]を選択して、右側の[開発者] にチェックマークを付けます。
- [開発] タブから[ Visual Basic ] を選択します。
- Project1、Microsoft Outlook Objects を展開し、ThisOutlookSession (左上) をダブルクリックします。
- 上記のコードをモジュールに貼り付けます。
- コピーしたコードの「example.com」を自分のドメインに置き換えます。
- VBA エディターを閉じて、変更をモジュールに保存します。
- [開発] タブで [マクロ セキュリティ] をクリックし、レベルを[すべてのマクロの通知] 以下に変更します。
- Outlook を再起動します。(上記のコードはそれ以外では初期化されません。)