使用Access VBA发送电子邮件

使用Access VBA发送电子邮件,vba,email,ms-access,Vba,Email,Ms Access,我正试图发送一封无法访问的电子邮件。电子邮件不会自动发送。我必须点击弹出的电子邮件发送 我的代码中是否缺少阻止电子邮件发送的内容 Dim strTo As String Dim strMessage As String Dim strSubject As String strTo = "Hazat.Bangurah@umm.edu" strSubject = "New Lab Charge Codes" strMessage = "Attac

我正试图发送一封无法访问的电子邮件。电子邮件不会自动发送。我必须点击弹出的电子邮件发送

我的代码中是否缺少阻止电子邮件发送的内容

Dim strTo As String
Dim strMessage As String
Dim strSubject As String

strTo = "Hazat.Bangurah@umm.edu"

strSubject = "New Lab Charge Codes"
strMessage = "Attached are the New Lab Charge Codes"

DoCmd.SendObject acSendQuery, "std qry_Master to HPM Lab Standard Compare", acFormatXLSX, strTo, , , strSubject, strMessage

DoCmd.SendObject
即使您使用
EditMessage:=False
,也会从outlook中显示一个警告弹出窗口。因此,您可以应用变通方法来避免它。首先将查询保存到磁盘,并将该文件作为附件添加。这项工作可以通过编程方式完成。尝试使用下面的代码发送邮件而不显示任何警告弹出窗口,但您必须将编程访问设置为
从不警告我可疑活动
。请从中查看此帖子


要设置编程访问权限,必须以管理员身份打开outlook。然后按照下面的屏幕截图进行操作


DoCmd.SendObject
即使使用
EditMessage:=False,也会从outlook中显示一个警告弹出窗口。因此,您可以应用变通方法来避免它。首先将查询保存到磁盘,并将该文件作为附件添加。这项工作可以通过编程方式完成。尝试使用下面的代码发送邮件而不显示任何警告弹出窗口,但您必须将编程访问设置为
从不警告我可疑活动
。请从中查看此帖子


要设置编程访问权限,必须以管理员身份打开outlook。然后按照下面的屏幕截图进行操作


什么弹出窗口?弹出窗口是来自电子邮件客户端还是来自MS Access?看看这个:似乎您需要使用
EditMessage:=False
来避免先编辑它。始终先阅读文档。弹出窗口来自电子邮件客户端Outlook,其中创建了带有附件的电子邮件,我必须添加发送。什么弹出窗口?弹出窗口是来自电子邮件客户端还是来自MS Access?看看这个:似乎您需要使用
EditMessage:=False
来避免先编辑它。始终先阅读文档。弹出窗口来自电子邮件客户端Outlook,其中创建了带有附件的电子邮件,我必须添加发送。
Private Sub CmdSendMail_Click()
Dim strTo As String
Dim strMessage As String
Dim strSubject As String
Dim attch As String

strTo = "Hazat.Bangurah@umm.edu"
attch = "D:\MyFile.xlsx"
strSubject = "New Lab Charge Codes"
strMessage = "Attached are the New Lab Charge Codes"

    ' Save file to disk.
    DoCmd.OutputTo acOutputQuery, "Query1", acFormatXLSX, attch, False, , , acExportQualityPrint

    Call SendEmailWithOutlook(strTo, strSubject, strMessage, attch)
End Sub
'======= Function to send email =======
Public Function SendEmailWithOutlook( _
    MessageTo As String, _
    Subject As String, _
    MessageBody As String, strAttachment As String)

    ' Define app variable and get Outlook using the "New" keyword
    Dim OutApp As Object
    Dim OutMail As Object  ' An Outlook Mail item
 
    ' Create a new email object
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olMailItem)


    ' Add the To/Subject/Body to the message and display the message
    With OutMail
        .To = MessageTo
        .Attachments.Add strAttachment
        .Subject = Subject
        .Body = MessageBody
        .Send       ' Send the message immediately
    End With

    ' Release all object variables
    Set OutApp = Nothing
    Set OutMail = Nothing

End Function