从 MS Access 发送电子邮件 不允许第三方 dll

Posted

技术标签:

【中文标题】从 MS Access 发送电子邮件 不允许第三方 dll【英文标题】:Sending an Email from MS Access No third party dll allowed 【发布时间】:2009-07-16 14:06:58 【问题描述】:

我需要从 MS Access 数据库发送一系列电子邮件通知。

没有像 Redemption 这样的第三方 dll 无法触发 Outlook 安全警告 电子邮件将包含 pdf 附件

我知道要做到这一点,我需要使用 MAPI,但我似乎找不到用 VBA 做到这一点的方法。

任何帮助将不胜感激

谢谢,

斯科特

【问题讨论】:

【参考方案1】:

如果您可以接受要求机器上存在 CDO,并且您不介意用户提供的 SMTP 服务器,则可以使用它。只是谷歌一些示例代码,但为了您的方便,我将在下面粘贴一些来自www.rondebruin.nl:

Sub CDO_Mail_Small_Text()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
'    Dim Flds As Variant

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

'    iConf.Load -1    ' CDO Source Defaults
'    Set Flds = iConf.Fields
'    With Flds
'        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
'                       = "Fill in your SMTP server here"
'        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
'        .Update
'    End With

strbody = "Hi there" & vbNewLine & vbNewLine & _
          "This is line 1" & vbNewLine & _
          "This is line 2" & vbNewLine & _
          "This is line 3" & vbNewLine & _
          "This is line 4"

With iMsg
    Set .Configuration = iConf
    .To = "ron@debruin.nl"
    .CC = ""
    .BCC = ""
    .From = """Ron"" <ron@something.nl>"
    .Subject = "Important message"
    .TextBody = strbody
    .Send
End With

End Sub

在 iMsg 上使用 .AddAttachment "C:\files\filename.pdf" 添加附件。

【讨论】:

一开始我是在玩弄这个想法,这就是我决定要走的路——谢谢 这也有帮助....Item ("schemas.microsoft.com/cdo/configuration/smtpusessl") = true【参考方案2】:

如果用户安装了 Outlook:

Dim strErrMsg As String 'For Error Handling
Dim olApp As New Outlook.Application
Dim olNameSpace As Outlook.NameSpace
Dim olMail As Outlook.MailItem
Dim oleGrf As Object
Dim strFileName As String

Set olNameSpace = olApp.GetNamespace("MAPI")
Set olMail = olApp.CreateItem(olMailItem)
Set oleGrf = Me.OLEchart.Object
strFileName = "c:\temp\Graph.jpg"
oleGrf.Export FileName:=strFileName

With olMail
    .To = "someone@somewhere.com"
    .Subject = "Graph Info " & Format(Now(), "dd mmm yyyy  hh:mm")
    .Attachments.Add strFileName
    .ReadReceiptRequested = False
    .Send
End With
Kill strFileName

还可以查看 Tony Toews 的Microsoft Access Email FAQ

【讨论】:

这是一个很好的资源,但不包含问题的实际答案。尽管我必须说,我认为不存在满足所有提出限制的答案。【参考方案3】:

查看页面Microsoft Access Email FAQ - Directly via the Winsock这些我自己没试过,但你应该可以修改VB6代码直接发送电子邮件。

【讨论】:

以上是关于从 MS Access 发送电子邮件 不允许第三方 dll的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 从 MS Access 发送电子邮件

MS Access / Outlook 2010 - 如何选择从哪个帐户发送电子邮件?

如何将最近发送的 10 封电子邮件下载到 ms access

VBA Excel - 从 MS Access 将列名保存到电子表格

MS Access 表的电子邮件地址验证

如何使用 MS Access 基于变量发送带有附加报告的自定义电子邮件? 2003 年或 2007 年