2009-07-23 107 views

回答

1

人们可以在VB 6.0中使用MAPISession控件,所以我想它会在VBA可用了。

Using the MAPI Controls

另一种方法是使用Outlook对象模型,但它需要微软的Outlook安装。但是,大多数拥有Access的用户通常也在其桌面上安装Outlook。请参阅How to automate Outlook by using Visual Basic

还有一个决定 - 您可以使用.NET(VB.NET for exmaple)编写一个非常小的组件,它将使用System.Net.Mail撰写和发送SmtpMail。对于你作为VBA开发者来说,它不会很难。你可以用一个函数SendEmail编写一个类。 然后你可以将这个类以COM,看到Exposing .NET Framework Components to COM 然后,你将有一个ActiveX DLL,您可以从您的VBA项目调用(使用的CreateObject(“”)等)

+1

我不知道你指的具体控制,但并非所有的ActiveX控件都与Access兼容。另外,如果控件没有正确安装,它可以完全破坏Access应用程序。因此,在Access中最好避免使用内置的ActiveX控件以外的任何东西。 – 2009-07-23 19:38:51

1

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

+0

投票+1为Outlook Redemption,伟大的工具集,特别是Outlook间谍! – 2009-07-27 15:38:09

1

有关此问题的综合答案(从Access发送电子邮件),请参阅Tony Toews's Access EMail FAQ。 Tony建议这样做,因为这样可以避免任何需要担心CDO等组件的版本或分发DLL或安装ActiveX控件的情况。正如托尼承认的那样,缺点是它的代码密集程度要高得多。