为何要从 Access 发送邮件?
想象一下这样的场景:你有一个客户管理数据库,每当有新客户录入时,你希望自动发送一封欢迎邮件;或者你有一个库存管理系统,当某个商品库存低于设定值时,系统能自动向采购部门发送一封 加拿大首席财务官电邮清单 提醒邮件。通过 Access 自动发送邮件,可以极大地提高工作效率,减少人工操作,确保信息的及时传递。这不仅能节省大量时间,还能有效避免人为疏漏。
需要准备些什么?
要实现这个功能,你只需要准备以下三样东西:
一个 Access 数据库:这是基础,你的数据都存储在这里。
一个 Outlook 桌面客户端:Access 无法直接发送邮件,它需要通过 Outlook 这个“中间人”来完成。所以,确保你的电脑上安装并配置好了 Outlook。
VBA 代码:这是实现自动化的核心。别担心,即使你对 VBA 不熟悉,也可以直接使用我提供的代码。
核心思想
我们的核心思路是:利用 VBA 代码,在 Access 中编写一个宏或者事件过程。当某个特定事件(例如,点击一个按钮、表单打开、数据更新后)触发时,VBA 代码会调用 Outlook 应用程序,生成一封新邮件,并根据你的设定填入收件人、主题和正文,最后发送出去。
实战代码
下面是一个简单的 VBA 宏,你可以直接复制到你的数据库中。
如何使用:
打开你的 Access 数据库。
找到你想要添加这个功能的按钮或者事件,例如在一个表单上添加一个按钮。
选中按钮,在属性表里找到事件选项卡,点击“在单击时”右边的三个点 ...。
选择“代码生成器”,然后将上面提供的 VBA 代码粘贴进去。
修改 .To、.Subject 和 .Body 的值,将它们替换成你需要的收件人、主题和正文。你甚至可以使用数据库中的字段来动态生成这些内容,比如 Me.邮箱地址 或 Me.客户姓名。

更进一步:实现自动化
如果你想让邮件发送过程完全自动化,而不是手动点击按钮,可以考虑以下几种方式:
表单事件:在表单的“加载后”或“更新后”事件中调用这段代码。
数据宏:Access 2010 及更高版本支持数据宏。你可以在表或查询的“插入后”、“更新后”或“删除后”事件中运行一个宏,该宏可以调用一个 VBA 函数来发送邮件。
定时任务:结合 Windows 的任务计划程序,你可以设置 Access 在每天的特定时间自动打开一个宏,该宏会执行一个查询并发送邮件。
常见问题及解决
“ActiveX 部件不能创建对象”错误:这通常是因为你的 Access 或 Outlook 安装不完整,或者注册表有问题。可以尝试修复安装 Office。
邮件发送失败,但代码没有报错:检查你的 Outlook 是否处于正常运行状态,是否需要输入密码或有安全提示。有时 Outlook 的安全设置会阻止外部程序发送邮件,你需要在 Outlook 的“信任中心”中调整相关设置。