我正在尝试使用VBA从MS Access发送电子邮件,但无法使用sendobject函数,因为这不支持外部文件附件。
有谁知道我该怎么做?
由于
答案 0 :(得分:1)
可以在VB 6.0中使用MAPISession控件,所以我想它也可以在VBA中使用。
另一种方法是使用Outlook对象模型,但它需要安装MS Outlook。但是,大多数具有Access的用户通常也会在桌面上安装Outlook。见How to automate Outlook by using Visual Basic
又一个决定 - 你可以使用.NET(用于exmaple的VB.NET)编写一个非常小的组件,它将使用System.Net.Mail来编写和发送SmtpMail。对于你作为VBA开发者来说,这不会很难。您可以使用单个函数SendEmail编写一个类。 然后,您可以将此类公开给COM,请参阅Exposing .NET Framework Components to COM 然后你将有一个ActiveX DLL,你可以从你的VBA项目调用(使用CreateObject(“”)等)
答案 1 :(得分:1)
如果您打算使用CDO解决方案(http://www.paulsadowski.com/WSH/cdo.htm),那么您应该知道,自Office 2007起,CDO不再与Outlook捆绑在一起了。如果您打算使用CDO解决方案,则需要下载CDO库here,并确保在您计划部署解决方案的任何计算机上也安装了所述库。另一种选择是Outlook Redemption。但要么会好起来的。两者都需要部署。
答案 2 :(得分:1)
对于此问题的综合答案(从Access发送电子邮件),请参阅Tony Toews's Access EMail FAQ。 Tony建议这样做directly via Winsock,因为这样可以避免担心CDO等组件的版本或分发DLL或安装ActiveX控件。正如托尼承认的那样,缺点是它的代码密集程度要高得多。
答案 3 :(得分:0)