MS Access - 群发电子邮件?

时间:2008-12-04 02:41:57

标签: ms-access

我正在使用MS Access创建一个包含超过5000个联系人的数据库。这些联系人分为联系人所属的员工,然后再分为类别以便于搜索。我想要做的是创建一个按钮,以表格形式(简单)打开查询,然后有复选框,以便员工可以选择,例如,100个联系人发送电子邮件到表格中的110,然后发送大量电子邮件,如简报(不是那么简单!)。我一直在努力想要解决这个问题,因为我并不真正理解编程(我很擅长这项工作而且我能尽我所能)并且我能找到的就是这个问题。关于循环(不知道!),我需要软件才能做到这一点。

请为我解决任何问题?如果可能的话,我想避免购买/安装软件,如果你有答案,请尽可能简单...

提前致谢!

凯特

8 个答案:

答案 0 :(得分:1)

我刚在MS Access 97中创建了以下工作示例。

示例表(我使用有效的电子邮件地址测试了代码):

ID名称电子邮件

1 Rics rics@stack.com

2 Kate kate@stack.com

3 X x@stack.com

带一个按钮的表单。 单击按钮时,将执行以下代码:

Private Sub Mail_Click()

    Dim r As Recordset
    Dim email As String
    Set r = CurrentDb.OpenRecordset("select * from Addresses")
    Do While Not r.EOF
        email = r(2)
        DoCmd.SendObject acSendNoObject, Null, Null, email, Null, Null, "Test subject", "Message body of the test letter", False, Null
        r.MoveNext
    Loop
    r.Close

End Sub

我希望您可以将其插入到您的应用程序中。

答案 1 :(得分:1)

搞定了工作:)

代码很棒,但需要进行一些调整以专门处理我的数据。在出现很多错误之后,这就是我最终想出来的:

    Dim r As Recordset
Dim Email As String
Set r = CurrentDb.OpenRecordset("select Email from FranksFinanceBrokers")
Do While Not r.EOF
    Email = Email & r(0) & ";"
    r.MoveNext
Loop
r.Close

DoCmd.SendObject acSendNoObject, Null, Null, "", "", Email, "", "", True, Null

End Sub

感谢您的帮助!

答案 2 :(得分:0)

我认为你需要学习一些VBA编码来完成这项工作。这个tutorial可能很有用。

这是send email from access的一种方式。

答案 3 :(得分:0)

以下是发送e-mail through MS Access

的另一种资源

答案 4 :(得分:0)

rics提供的答案将向记录集中的每个人发送一封电子邮件,但听起来您可能想要做的就是将一封电子邮件发送到自定义分发列表。为此,调整rics的代码以构建类似这样的地址字符串:

Private Sub Mail_Click()

Dim r As Recordset
Dim email As String
Set r = CurrentDb.OpenRecordset("select * from Addresses")
Do While Not r.EOF
    email = email & r(2) & ";"
    r.MoveNext
Loop
r.Close

DoCmd.SendObject acSendNoObject, Null, Null, email, Null, Null, "Test subject", "Message body of the test letter", False, Null

End Sub

答案 5 :(得分:0)

凯特,

很抱歉,您没有针对您计划的具体“神奇”代码。你必须写点东西。我的解决方案是:

  1. 创建一个包含3个控件的表单:1个文本控件,1个列表框控件,1个“发送”按钮
  2. 文本控件包含要发送的文本
  3. 列表控件显示所有可用的电子邮件(填充记录集)
  4. 将启用Multiselect,以便我可以在列表中选择多个项目
  5. 点击按钮,我会

    连接所有选定的电子邮件以获取“sendTo”字符串,例如     sendTo =“bla@bla.com; blo@blo.com”。  使用sendTo +文本字符串作为参数调用doCmd.sendObject方法

  6. 选项可以是

    • 对电子邮件主题进行额外控制
    • 在表格中保留已发送邮件的痕迹(主题,文字,日期,到达人数)。它可以像“每封邮件一条记录”一样基本,带有备忘录字段来记录sendTo文本字符串(当然,您可以使用多个表格构建更智能的东西,以坚持可以在您的人员之间建立的多对多关系表和您的邮件表,但您可能不需要它)

答案 6 :(得分:0)

来自Access的电子邮件有许多陷阱,尤其是这样做可能会让您看起来像垃圾邮件发送者并导致您的电子邮件主机出现问题。此外,还有一堆安全问题。有关此信息的最佳来源是Tony Toews's Email FAQ

答案 7 :(得分:0)

有几种方法可以绕过丢失的电子邮件地址。最简单的方法是调整SQL以排除它们:

从FranksFinanceBrokers选择电子邮件WHERE(电子邮件不是空)和(电子邮件<>“”)

另一种方法是将IF语句添加到字符串构建代码中:

IF Not IsNull(r(0))AND r(0)<> “”那么电子邮件=电子邮件& r(0)& “;”

我只是在SQL级别过滤它 - 更高效,更容易。

购买软件会更容易吗?是的,但那里的挑战在哪里? :-)你已经在那里了,所以我坚持下去。