【发布时间】:2014-01-30 05:03:54
【问题描述】:
目前我的代码检查电子邮件(在 Item_Send 事件上)以查看它是否有附件,然后给出一个条件表单来加密和发送、发送未加密或取消发送。它还在正文中搜索 SSN,为用户提供相同的表单弹出窗口。除非用户同时打开两个电子邮件窗口/实例,否则所有工作都按广告宣传。例如,如果电子邮件#1 有附件并且电子邮件#2 位于后台,如果我要尝试发送电子邮件#1 并选择取消发送,它会返回到电子邮件#1 而不发送(如广告所示),但是,当您返回电子邮件#2 并尝试发送(与电子邮件#1 无关)时,它也不会发送。我将在下面显示代码,但我使用“Cancel=True”命令停止电子邮件,但这会停止发送操作并且检查器保持打开状态,因此不允许我发送任何可能已经打开的电子邮件时间。有什么想法吗?我怎样才能让这个 Item_Send 事件只处理 CURRENT Outlook.MailItem 实例而不是另一个可能同时打开的实例。谢谢!我遗漏了很多代码,这只是我遇到的问题的一部分。 SSNBtnPress=3 表示取消=True
Public Sub Application_ItemSend(ByVal Item As Object, _
ByRef Cancel As Boolean) Handles Application.ItemSend
Dim mailItem As Outlook.MailItem = TryCast(Item, Outlook.MailItem)
If mailItem IsNot Nothing Then
frm1.ShowDialog()
If (SSNbtnPress = 1) Then
mailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/x-PII", "Encryptclicked")
If RegexObj1.IsMatch(mailItem.Body) Then
mailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x6E010003", 3)
Cancel = False
ElseIf RegexObj1.IsMatch(mailItem.Subject) Then
mailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x6E010003", 3)
Cancel = False
Else
mailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x6E010003", 3)
Dim addToBody As String = "Test" + vbNewLine + vbNewLine + mailItem.Body
Dim addtoSubject As String = "Test " + mailItem.Subject
mailItem.Subject = addtoSubject
mailItem.Body = addToBody
Cancel = False
End If
End If
End If
If (SSNbtnPress = 2) Then
mailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/x-PII", "SUclicked")
mailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x6E010003", 2)
Cancel = False
Exit Sub
ElseIf (SSNbtnPress = 3) Then
mailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x6E010003", 2)
Cancel = True
Exit Sub
End If
End Sub
结束类
【问题讨论】:
标签: vba vb.net email outlook outlook-addin