我被要求实施一个解决方案,员工必须为新电子邮件指定安全级别(这些电子邮件由交换服务器过滤)。我想要做的就是拥有它,所以当发送新电子邮件时,会出现一个对话框,其中包含安全级别的选项,即PERSONAL
,UNCLASSIFIED
,CLASSIFIED
等,然后附加到主题行[SEC=variable]
的后面。目前我有下面的代码,但这显然必须手动修改,我不希望工作人员必须这样做(他们不会)。
Public Class ThisAddIn
Private WithEvents inspectors As Outlook.Inspectors
Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
inspectors = Me.Application.Inspectors
End Sub
Private Sub inspectors_NewInspector(ByVal Inspector As Microsoft.Office.Interop.Outlook.Inspector) Handles inspectors.NewInspector
Dim mailItem As Outlook.MailItem = TryCast(inspector.CurrentItem, Outlook.MailItem)
If Not (mailItem Is Nothing) Then
If mailItem.EntryID Is Nothing Then
mailItem.Subject = "[SEC=UNCLASSIFIED]"
End If
End If
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
End Class
任何获得此对话框的帮助都将不胜感激。我正在使用Visual Studio 2010和Outlook 2010。
答案 0 :(得分:0)
根据Gaffi建议,使用ItemSend
事件显示用户表单,用户可以在其中选择发送选项。我担心我不知道如何在Visual Studio中这样做,仅在VBA中。希望你能翻译这段代码。
我创建了一个带有单选按钮的示例用户表单,因此只能选择一个选项。
表单背后唯一的代码是卸载表单:
Private Sub CommandButton1_Click()
Unload Me
End Sub
在ThisOutlookSession模块(Outlook的内置类模块)中,以下代码在发送电子邮件时创建表单,要求发件人对电子邮件进行分类:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim frm As UserForm1
Dim chosenvalue As String
Set frm = New UserForm1
frm.Show vbModal
Select Case True
Case frm.OptionButton1.Value
chosenvalue = "PERSONAL"
Case frm.OptionButton2.Value
chosenvalue = "UNCLASSIFIED"
Case frm.OptionButton3.Value
chosenvalue = "CLASSIFIED"
Case Else ' no value chosen
MsgBox "you did not select a value. cancelling send."
Cancel = True
Exit Sub
End Select
If TypeName(Item) = "MailItem" Then
Item.Subject = Item.Subject & " [SEC=" & chosenvalue & "]"
End If
End Sub
由于我们在类模块之外创建表单,因此即使表单关闭后我们也可以读取选中的单选按钮。根据选择,主题被修改。如果未做出选择,则取消ItemSent事件,并强制用户再次点击Send
并从用户表单中选择一些内容。