【问题标题】:Adding external attachment an mailing from Access从 Access 添加外部附件和邮件
【发布时间】:2010-11-13 08:40:04
【问题描述】:

我正在尝试使用 VBA 从 MS Access 发送电子邮件,但无法使用 sendobject 函数,因为它不支持外部文件附件。

有人知道我该怎么做吗?

谢谢

【问题讨论】:

    标签: ms-access email vba


    【解决方案1】:

    有关此问题的综合答案(来自 Access 的电子邮件),请参阅 Tony Toews's Access EMail FAQ。 Tony 建议这样做directly via Winsock,因为这样可以避免担心 CDO 等组件的版本或分发 DLL 或安装 ActiveX 控件。正如 Tony 承认的那样,缺点是代码密集程度更高。

    【讨论】:

      【解决方案2】:

      如果您打算使用 CDO 解决方案 (http://www.paulsadowski.com/WSH/cdo.htm),那么您应该知道,从 Office 2007 开始,CDO 不再与 Outlook 捆绑在一起。如果您要使用 CDO 解决方案,您需要下载 CDO 库 here 并确保该库也安装在您计划部署解决方案的任何机器上。另一种选择是Outlook Redemption。但两者都可以正常工作。两者都需要部署。

      【讨论】:

      • 为 Outlook Redemption 投票 +1,很棒的工具集,尤其是 Outlook 间谍!
      【解决方案3】:

      CDO 似乎效果最好。您可以谷歌 CDO.Message 或查看此链接:http://www.paulsadowski.com/WSH/cdo.htm

      【讨论】:

        【解决方案4】:

        可以在 VB 6.0 中使用 MAPISession 控件,所以我想它也可以在 VBA 中使用。

        Using the MAPI Controls

        另一种方法是使用 Outlook 对象模型,但需要安装 MS Outlook。但是,大多数拥有 Access 的用户通常在他们的桌面上也有 Outlook。见How to automate Outlook by using Visual Basic

        还有一个决定 - 您可以使用 .NET(例如 VB.NET)编写一个非常小的组件,该组件将使用 System.Net.Mail 来编写和发送 SmtpMail。对于您作为 VBA 开发人员来说,这不会很困难。您可以使用单个函数 SendEmail 编写一个类。 然后你可以把这个类暴露给 COM,见Exposing .NET Framework Components to COM 然后您将拥有一个可以从您的 VBA 项目中调用的 ActiveX DLL(使用 CreateObject("") 等)

        【讨论】:

        • 我不知道您所指的具体控件,但并非所有 ActiveX 控件都与 Access 兼容。此外,如果控件未正确安装,它可能会完全破坏 Access 应用程序。因此,最好在 Access 中避免使用内置 ActiveX 控件以外的任何内容。
        猜你喜欢
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-28
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多