65.9K
CodeProject 正在变化。 阅读更多。
Home

MiniCRM

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.67/5 (6投票s)

2007 年 12 月 31 日

CPOL

4分钟阅读

viewsIcon

34190

downloadIcon

630

使用此 Outlook 2007 插件通知您的联系人。

引言

在许多场合,例如节假日或商务活动,我需要向我的联系人发送电子邮件,而无需将所有联系人姓名放在单个邮件的“收件人”字段中。很多时候,我需要将特定邮件的副本单独发送给我的联系人,我不得不重复打开邮件、粘贴正文、输入联系人电子邮件并发送的过程。

然后我接触了 Visual Studio Tools For Office (VSTO)。我考虑创建一个 Outlook 2007 插件,从数据库中读取我的联系人,然后逐个向他们发送邮件。此消息将像往常一样在 Outlook 编辑器中输入,包括主题和正文。我所要做的就是按“发送”按钮,然后将此编写好的邮件发送给先前存储在 Access 数据库中的联系人。这并非用于垃圾邮件,因为发件人的电子邮件是从当前的 Outlook 帐户中检索的,而不是由用户手动伪造的。

请下载 ZIP 文件并在 Visual Studio .NET 2008 中打开该项目。构建并运行。Outlook 2007 将被启动。要查看插件,请执行以下操作

  1. 打开位于项目文件夹中的 *contacts.mdb* 文件,并输入您的联系人信息。最重要的数据是姓名和电子邮件地址。
  2. 调用“新建邮件编写”对话框。
  3. 在左上角选择 CppMax 功能区,然后单击其右侧的 MiniCRM 链接。
  4. 您的客户列表(先前存储在项目文件夹中的 *contacts.mdb* 中)将出现在左侧任务窗格中。
  5. 输入您的邮件主题和正文。
  6. 单击客户列表下方任务窗格底部的“发送邮件”按钮。

编写对话框将关闭,新邮件将发送给列表中的所有收件人。

如何做到?

为了让您熟悉 VSTO 插件,我建议您观看 Microsoft VSTO 网站上的 特别网络广播。我认为这是一个很好的起点。本文中显示的示例是在观看了一些网络广播后编写的。我不会重复它们中说过的内容,但我将重点介绍为 Outlook 开发插件所需的步骤

  1. 创建项目:文件/添加/新建项目。选择 Visual C# 或 VB.NET Office 树节点。选择 Outlook 2007 插件并输入项目名称和路径。
  2. 使用“数据/添加新数据源”添加数据源。在向导中选择数据库类型和名称。按照向导选择您的字段并创建查询。
  3. 创建一个新的任务窗格。任务窗格是一个可停靠窗口,显示在当前 Outlook 窗口的一侧。任务窗格实际上只是一个用户控件。处理用户控件的方式与处理 Windows 窗体用户控件的方式相同。像往常一样向其添加控件、事件和 .NET 代码。
  4. 添加功能区:项目/添加/新项目/功能区 XML。编辑 XML 以指定您的功能区选项卡、组和按钮。编写按钮事件处理程序以调用任务窗格或在 Outlook 中执行您想要的任何操作。
  5. 使用定义的数据源或通过直接代码检索数据,并在网格或任何数据绑定控件中显示数据。
  6. 到目前为止,这一切都很正常。此插件的不同之处在于它如何逐个向所有收件人发送电子邮件。以下是执行此操作的代码
    '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
  7. 请注意,插件是从 Visual Studio .NET 2008 内部运行的,而不是直接通过安装程序运行的。这是因为,要拥有一个独立的最终插件,您需要对其进行签名,因为 Office 具有强大的安全功能。
  8. 包含一个安装项目以安装示例,但它可能无法运行,因为代码需要进行身份验证和签名。

未来的增强

此示例还有很多工作要做,它不是最终产品。它只是为了向您展示如何操作。将来,我们可能会直接从 Outlook(而不仅仅是通过 Access)添加和删除客户列表。此外,还可以从文本文件中导入。

© . All rights reserved.