Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Outlook VBA用于验证收件人_Vba_Outlook - Fatal编程技术网

Outlook VBA用于验证收件人

Outlook VBA用于验证收件人,vba,outlook,Vba,Outlook,发送前检查多个黑名单电子邮件地址的最佳方法是什么 我有几个电子邮件地址,我是不允许发送信息的一部分,作为一个项目。我希望Outlook检查任何黑名单电子邮件地址,并在发送前通知我是否包含这些地址。下面是我发现要修改的代码 例如,我的黑名单包括:bad@address.com", "worst@address.com", "evil@address.com" 将这些地址放入下面的代码中的最佳方式是什么?最好是以允许轻松更改黑名单中的地址的方式 下面是我的代码的最新版本以及您的建议。不幸的是,它让我

发送前检查多个黑名单电子邮件地址的最佳方法是什么

我有几个电子邮件地址,我是不允许发送信息的一部分,作为一个项目。我希望Outlook检查任何黑名单电子邮件地址,并在发送前通知我是否包含这些地址。下面是我发现要修改的代码

例如,我的黑名单包括:bad@address.com", "worst@address.com", "evil@address.com"

将这些地址放入下面的代码中的最佳方式是什么?最好是以允许轻松更改黑名单中的地址的方式

下面是我的代码的最新版本以及您的建议。不幸的是,它让我把电子邮件发送到清单上的地址。有什么建议吗

  Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

  Dim Recipients As Outlook.Recipients
  Dim recip As Outlook.Recipient
  Dim i
  Dim prompt As String


On Error Resume Next
 ' use lower case for the address
 ' LCase converts all addresses in the To field to lower case

  Checklist = "bad@address.com" & _
            "worst@address.com" & _
            "evil@address.com" '// , _ and so on

 Set Recipients = Item.Recipients
  For i = Recipients.Count To 1 Step -1
    Set recip = Recipients.Item(i)

 If InStr(LCase(recip), LCase(Checklist)) Then
      prompt$ = "You sending this to this to " & Item.To & ". Are you sure you want to send it?"
       If MsgBox(prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then
         Cancel = True
       End If
  End If

Next i


End Sub

创建一个程序级变量检查表,它是黑名单电子邮件的csv列表。您可以在过程中将其初始化为硬分配或从其他数据源(例如sql server)动态检索

Dim lbadFound  As Boolean
dim badAddresses as string
lbadFound = False

CheckList = "bad@address.com," & _
            "worst@address.com," &  _
            "evil@address.com" '// , _ and so on

    Set Recipients = Item.Recipients
    For i = Recipients.Count To 1 Step -1
      Set recip = Recipients.Item(i)

      If instr(1,lcase(CheckList),  LCase(recip)) >=1 Then 
          lbadFound = true
          badAddresses  = badAddresses  & recip & & vbcrlf 
      End If

    Next i

    If lbadFound Then
       prompt$ = "You sending this mail to one or more black listed email address(es)" & badAddresses & vbcrlf & " Are you sure you want to send it?"
       If MsgBox(prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then
         Cancel = True
       End If
    End If

我将把这个宏交给其他人安装,所以我希望在宏中包含黑名单上的电子邮件,而不是单独的文件,但是如果需要的话,可以很容易地阅读和修改。这正是我想要的。我在结尾处收到一个编译错误“bad@address.com“,”错误显示“预期:语句结束”请立即尝试,我忘了放附录Hanks Krishna,它现在编译,但宏仍然允许我向清单上的地址发送电子邮件。如果这不起作用,请立即尝试,你能在compare语句和Debug.print返回什么吗?选择一个答案,说明这是否可以关闭。保持清洁,让我们不要夸大未回答的问题