如何使用自动化通过 Access 2000 发送 Microsoft Outlook 消息

本文适用于 Microsoft Access 数据库 (.mdb) 和 Microsoft Access 项目 (.adp) 。

摘要

本文介绍如何使用自动化在 Microsoft Access 2000 中创建和发送 Microsoft Outlook 消息。

Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于适销性或对特定用途的适用性的默示担保。 本文假设您熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能,但他们不会修改这些示例以提供新增功能或构建步骤以满足你的特定需要。

注意

如果已安装 Outlook 电子邮件安全更新,则以下代码可能无法正常工作。

可以使用该 SendObject 方法以编程方式在 Microsoft Access 中发送 MAPI 邮件。 但是, SendObject 该方法不允许你访问完整的邮件功能,例如能够附加外部文件或设置邮件重要性。 下面的示例使用自动化创建和发送邮件,可用于利用 Microsoft Outlook 中不适用于该 SendObject 方法的许多功能。

使用自动化发送 Microsoft Outlook 邮件有六个主要步骤,如下所示:

  1. 初始化 Outlook 会话。
  2. 创建新消息。
  3. 将收件人 (收件人添加到、CC 和 BCC) 并解析其姓名。
  4. 设置有效的属性,例如主题、正文和重要性。
  5. 如果有任何) ,请 (添加附件。
  6. 显示/发送消息。

以编程方式发送 Microsoft Outlook 邮件

  1. 在 C:\My Documents 文件夹中创建名为 Customers.txt 的示例文本文件。

  2. 启动 Microsoft Access,并打开示例数据库 Northwind.mdb。

  3. 创建模块并在“声明”部分中键入以下行(如果该模块尚不存在):

    Option Explicit

  4. “工具” 菜单上,选择 “引用”。

  5. “引用” 框中,选择 Microsoft Outlook 9.0 对象库,然后选择 “确定”。

    注意

    如果 Microsoft Outlook 9.0 对象库 未显示在 “可用引用 ”框中,请浏览文件 Msoutl9.olb 的硬盘。 如果找不到此文件,则必须运行 Microsoft Outlook 安装程序才能安装它,然后才能继续执行此示例。

  6. 在新模块中键入以下过程:

    Sub SendMessage(Optional AttachmentPath)
        Dim objOutlook As Outlook.Application
        Dim objOutlookMsg As Outlook.MailItem
        Dim objOutlookRecip As Outlook.Recipient
        Dim objOutlookAttach As Outlook.Attachment
    
        ' Create the Outlook session.
        Set objOutlook = CreateObject("Outlook.Application")' Create the message.
        Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    
        With objOutlookMsg
        ' Add the To recipient(s) to the message.
        Set objOutlookRecip = .Recipients.Add("Nancy Davolio")
        objOutlookRecip.Type = olTo
    
        ' Add the CC recipient(s) to the message.
        Set objOutlookRecip = .Recipients.Add("Andrew Fuller")
        objOutlookRecip.Type = olCC
    
        ' Set the Subject, Body, and Importance of the message.
        .Subject = "This is an Automation test with Microsoft Outlook"
        .Body = "Last test - I promise." & vbCrLf & vbCrLf
        .Importance = olImportanceHigh 'High importance
    
        ' Add attachments to the message.
        If Not IsMissing(AttachmentPath) Then
        Set objOutlookAttach = .Attachments.Add(AttachmentPath)
        End If
    
        ' Resolve each Recipient's name.
        For Each objOutlookRecip In .Recipients
        objOutlookRecip.Resolve
        If Not objOutlookRecip.Resolve Then
        objOutlookMsg.Display
        End If
        Next
        .Send
    
        End With
        Set objOutlookMsg = Nothing
        Set objOutlook = Nothing
    End Sub
    
  7. 若要测试此过程,请在 “即时 ”窗口中键入以下行,然后按 Enter:

    SendMessage "C:\My Documents\Customers.txt"

    若要在不指定附件的情况下发送消息,请在调用过程时省略参数,如下所示:

    SendMessage