你怎么能得到Outlook
如果您要向外部域发送电子邮件并发出警告?
每天发送大量电子邮件,总是有可能错误地将一封发送给错误的人。当他们是您公司以外的客户或人员时,这尤其是一个问题。
使用 Alt + Enter
在为我输入电子邮件后快速发送电子邮件通常是原因,因为我没有彻底检查收件人。
我发现了许多不太好的实现,所以我想我会在下面分享我的...
最佳答案
感谢 ojhhawkins 提供上面的代码 - 非常有用。我做了一个简单的迭代,在 MsgBox 文本中包含一个外部电子邮件地址列表。
注意事项 - 我注意到当您在其他程序(例如 Excel、Adobe Reader 等)中使用“作为电子邮件附件发送”时不会出现警告。如 niton指出:
Re:Send As Email Attachment in other programmes. Described in notes here outlookcode.com/d/code/setsavefolder.htm "... does not work on messages created with File | Send commands in Office programs or similar commands in Windows Explorer or other programs. Those commands invoke Simple MAPI, which bypasses Outlook functionality."
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 应用程序中:
关于vba - 在将电子邮件发送到 Outlook 中的外部域之前发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757373/