我正在使用Visual Studio 2017安装的办公开发包,想要创建一个基于收到的电子邮件响应的插件。 基本上我想要监控一个Infra支持邮箱,它根据传入的邮件内容将电子邮件转发给相关团队。
关于如何做到这一点的任何建议
答案 0 :(得分:0)
有多种方法可以实现所需的功能:
使用规则设置转发规则。您可以在Outlook中手动执行此操作并以编程方式执行此操作。 Outlook对象模型提供了所有必需的类,有关详细信息,请参阅How to: Create a Rule to Assign Categories to Mail Items Based on Multiple Words in the Subject。
使用NewMailEx事件处理传入的电子邮件。当新邮件到达收件箱时以及客户端规则处理发生之前,NewMailEx
事件将触发。您可以使用传递的EntryIDCollection
参数表示的条目ID来调用NameSpace.GetItemFromID
方法并处理该项目。在事件处理程序中,您可以检查收到的电子邮件并以编程方式转发电子邮件。 MailItem类的Forward方法对项执行Forward
操作,并将生成的副本作为MailItem对象返回。
Sub RemoveAttachmentBeforeForwarding()
Dim myinspector As Outlook.Inspector
Dim myItem As Outlook.MailItem
Dim myattachments As Outlook.Attachments
Set myinspector = Application.ActiveInspector
If Not TypeName(myinspector) = "Nothing" Then
Set myItem = myinspector.CurrentItem.Forward
Set myattachments = myItem.Attachments
While myattachments.Count > 0
myattachments.Remove 1
Wend
myItem.Display
myItem.Recipients.Add "Dan Wilson"
myItem.Send
Else
MsgBox "There is no active inspector."
End If
End Sub
您可能会发现How To: Respond to an Outlook email programmatically文章很有帮助。
答案 1 :(得分:0)
此代码使用事件将传入邮件发送到默认收件箱
using Outlook = Microsoft.Office.Interop.Outlook;
public partial class ThisAddIn
{
Outlook.NameSpace outlookNameSpace;
Outlook.MAPIFolder inbox;
Outlook.Items items;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
outlookNameSpace = this.Application.GetNamespace("MAPI");
inbox = outlookNameSpace.GetDefaultFolder(
Microsoft.Office.Interop.Outlook.
OlDefaultFolders.olFolderInbox);
items = inbox.Items;
items.ItemAdd +=
new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);
}
void items_ItemAdd(object Item)
{
Outlook.MailItem mail = (Outlook.MailItem)Item;
if (Item != null)
{
Outlook.MailItem replyMail = mail.Reply();
//Do your response
mail.Send();
}
}
}