MiniCRM
使用此 Outlook 2007 插件通知您的联系人。
引言
在许多场合,例如节假日或商务活动,我需要向我的联系人发送电子邮件,而无需将所有联系人姓名放在单个邮件的“收件人”字段中。很多时候,我需要将特定邮件的副本单独发送给我的联系人,我不得不重复打开邮件、粘贴正文、输入联系人电子邮件并发送的过程。
然后我接触了 Visual Studio Tools For Office (VSTO)。我考虑创建一个 Outlook 2007 插件,从数据库中读取我的联系人,然后逐个向他们发送邮件。此消息将像往常一样在 Outlook 编辑器中输入,包括主题和正文。我所要做的就是按“发送”按钮,然后将此编写好的邮件发送给先前存储在 Access 数据库中的联系人。这并非用于垃圾邮件,因为发件人的电子邮件是从当前的 Outlook 帐户中检索的,而不是由用户手动伪造的。
请下载 ZIP 文件并在 Visual Studio .NET 2008 中打开该项目。构建并运行。Outlook 2007 将被启动。要查看插件,请执行以下操作
- 打开位于项目文件夹中的 *contacts.mdb* 文件,并输入您的联系人信息。最重要的数据是姓名和电子邮件地址。
- 调用“新建邮件编写”对话框。
- 在左上角选择 CppMax 功能区,然后单击其右侧的 MiniCRM 链接。
- 您的客户列表(先前存储在项目文件夹中的 *contacts.mdb* 中)将出现在左侧任务窗格中。
- 输入您的邮件主题和正文。
- 单击客户列表下方任务窗格底部的“发送邮件”按钮。
编写对话框将关闭,新邮件将发送给列表中的所有收件人。
如何做到?
为了让您熟悉 VSTO 插件,我建议您观看 Microsoft VSTO 网站上的 特别网络广播。我认为这是一个很好的起点。本文中显示的示例是在观看了一些网络广播后编写的。我不会重复它们中说过的内容,但我将重点介绍为 Outlook 开发插件所需的步骤
- 创建项目:文件/添加/新建项目。选择 Visual C# 或 VB.NET Office 树节点。选择 Outlook 2007 插件并输入项目名称和路径。
- 使用“数据/添加新数据源”添加数据源。在向导中选择数据库类型和名称。按照向导选择您的字段并创建查询。
- 创建一个新的任务窗格。任务窗格是一个可停靠窗口,显示在当前 Outlook 窗口的一侧。任务窗格实际上只是一个用户控件。处理用户控件的方式与处理 Windows 窗体用户控件的方式相同。像往常一样向其添加控件、事件和 .NET 代码。
- 添加功能区:项目/添加/新项目/功能区 XML。编辑 XML 以指定您的功能区选项卡、组和按钮。编写按钮事件处理程序以调用任务窗格或在 Outlook 中执行您想要的任何操作。
- 使用定义的数据源或通过直接代码检索数据,并在网格或任何数据绑定控件中显示数据。
- 到目前为止,这一切都很正常。此插件的不同之处在于它如何逐个向所有收件人发送电子邮件。以下是执行此操作的代码
'In the class declaration of the User Control Private contact As ContactsDataSet.ContactsRow Private thisInspector As Outlook.Inspector Private thisMessage As Outlook.MailItem // The method handler to send the emails Private Sub SendEmails_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles SendEmails.Click 'The Current Inspector is the Mail Compose New Message dialog thisInspector = Globals.ThisAddIn.Application.ActiveInspector thisMessage = CType(thisInspector.CurrentItem, Outlook.MailItem) Dim contact As ContactsDataSet.ContactsRow Dim sSubject As String Dim sBody As String Dim msg As Outlook.MailItem ' save the message body and subject sSubject = thisMessage.Subject sBody = thisMessage.Body ' loop for all contacts in the database For Each contact In ContactsDataSet.Tables(0).Rows ' create a new message and set the body and subject then send msg = CType(Globals.ThisAddIn.Application.CreateItem(_ Outlook.OlItemType.olMailItem), Outlook.MailItem) msg.Subject = sSubject msg.Body = sBody msg.To = contact.EmailAddress msg.Send() Next ' close the Mail Compose dialog thisMessage.Close(Outlook.OlInspectorClose.olDiscard) End Sub
- 请注意,插件是从 Visual Studio .NET 2008 内部运行的,而不是直接通过安装程序运行的。这是因为,要拥有一个独立的最终插件,您需要对其进行签名,因为 Office 具有强大的安全功能。
- 包含一个安装项目以安装示例,但它可能无法运行,因为代码需要进行身份验证和签名。
未来的增强
此示例还有很多工作要做,它不是最终产品。它只是为了向您展示如何操作。将来,我们可能会直接从 Outlook(而不仅仅是通过 Access)添加和删除客户列表。此外,还可以从文本文件中导入。