ACCESS VBA自动发送邮件,但是只能发送一封邮件,不能循环,求大神帮忙
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACCESS VBA自动发送邮件,但是只能发送一封邮件,不能循环,求大神帮忙相关的知识,希望对你有一定的参考价值。
VBA代码:
Sub SendToSubjBody(strTo As String, _
bolhtml As Boolean, _
strSubj As String, _
strBody As String, _
AttachmentFileName As String, _
Optional AutoSend As Boolean = True)
Dim ola1 As Outlook.Application
Dim mai1 As Outlook.MailItem
Dim atts As Outlook.Attachments
Dim newAttachment As Outlook.Attachment
Set ola1 = New Outlook.Application
Set mai1 = ola1.CreateItem(olMailItem)
mai1.To = strTo '地址
mai1.Subject = strSubj '主题
If bolHTML = True Then
mai1.HTMLBody = strBody '内容
Else
mai1.Body = strBody
End If
If AutoSend = True Then
On Error GoTo continue
SendEmail:
mai1.Display
DoEvents
DoEvents
DoEvents
SendKeys "%(s)", Wait:=True '打开Outlook新建的邮件,点击Alt+s发送
DoEvents
mai1.Display
GoTo SendEmail '循环判断,直到新建的邮件被发送出去
continue:
On Error GoTo 0
' mai1.Send
Else
mai1.Save
End If
ola1.Quit
Set ola1 = Nothing
'MsgBox "发送邮件完成!"
End Sub
Private Sub Command0_Click()
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("联系人")
rst.MoveLast
rst.MoveFirst
Do Until rst.EOF
SendToSubjBody rst!emailaddress, 0, "AL-KO订单交期提醒", rst!Attachment, False 'AtuoSend参数为False,邮件将会存放在草稿箱或者发件箱里面,具体根据用户OutLook的设置
rst.MoveNext
Loop
MsgBox rst.RecordCount & "个邮件已经发送出去"
End Sub
显示如图
我代码写错了,最后不应该退出,谢谢你
参考技术A office vba问题帮解决使用 VBA 从 MS Access 发送电子邮件
【中文标题】使用 VBA 从 MS Access 发送电子邮件【英文标题】:Using VBA to send email from MS Access 【发布时间】:2021-11-21 21:26:24 【问题描述】:你好 *** 成员
我是一名长期使用 MS Access 的用户,他已远离 VBA 和 SQL,并创建了一个表单,并希望使用从子表单捕获数据的按钮(基于查询)发送电子邮件。
我使用这个YouTube 视频作为指导,但遇到了卡住(从“msg =...”开始,当我尝试运行代码时(如下)。
不胜感激。
Private Sub cmd_EmailContact_Click()
Dim Msg As String
**msg = "Dear " & First name & ",<P>" & _
Student First name & "has been successfully been loaded on the platform" & ",<P>" & _
"Student login details on the platform are:" & ",<P>" & _
"Username:" & Username & ",<P>" & _
"Password:" & Password**
Dim O As Outlook.Application
Dim M As Outlook.MailItem
Set O = New Outlook.Application
Set M = O.CreateItem(olMailItem)
With M
.BodyFormat = olFormatHTML
.HTMLBody = Msg
.To = Email
.Subject = "Student available on OARS"
.Display
End With
Set M = Nothing
Set O = Nothing
End Sub
【问题讨论】:
这能回答你的问题吗? Sending Email using Access VBA 什么是Student First name
?你认为这是某种变量名吗? fwiw,我不建议使用 youtube 来学习如何编码。
您真正要问的是“如何使用变量在多行上创建字符串?”因为其余代码都很好(与实际从任何地方发送电子邮件无关),尽管我认为不需要.BodyFormat
。
尝试使用msg = "Test"
而不是设置msg
的代码块,它应该可以工作。
感谢您对 BraX 的建议。我会试试 msg = "Test"。我想在电子邮件的正文中包含以下变量。在表单上的查询中填充变量。 - 名字(教师姓名) - 学生名字 - 用户名 - 密码
【参考方案1】:
要以 HTML 格式发送电子邮件,您需要使用 HTML 标记格式化正文并设置olMailItem
(电子邮件)的HTMLBody
属性,如下所示。
该示例使用后期绑定(无需引用 Outlook),这意味着它可以在安装了不同版本的 Outlook 时运行。
Private Sub cmd_EmailContact_Click()
Dim firstName As String, _
studentFirstName As String, _
userName As String, _
password As String, _
email As String, _
body_ As String
'provide values
firstName = "ABC"
studentFirstName = "XYZ"
userName = "User"
password = "Pass"
email = "foo@bar.com"
'build body
body_ = "<p> Dear" & firstName & ", </p>" _
& "<p>" & studentFirstName & " has been successfully been loaded on the platform. </p>" _
& "<p> Student login details on the platform are: </p>" _
& "<p> Username: " & userName & "</p>" _
& "<p> Password: " & password & "</p>"
'send email
With CreateObject("Outlook.Application")
With .CreateItem(0) 'olMailItem
.BodyFormat = 2 'olFormatHTML
.To = email
.Subject = "Student available on OARS"
.HTMLBody = "<html><head></head><body>" & body_ & "</body></html>"
.Display
End With
End With
End Sub
您需要为以下变量提供值:
名字 学生名字 用户名 密码 电子邮件【讨论】:
以上是关于ACCESS VBA自动发送邮件,但是只能发送一封邮件,不能循环,求大神帮忙的主要内容,如果未能解决你的问题,请参考以下文章