我已经为我的组织编写了一个电子邮件程序,处理了一些非常专业的东西,我可以使用Outlook或Gmail.现在,经理想偶尔向我们的小客户群发送电子邮件,但我希望电子邮件正文看起来很专业而不是作为附件发送.我拼凑了一个html文档,该文档存在于所有浏览器中并且已经过验证.我的问题是我无法弄清楚如何将消息体指向html文档.这是重要的代码.
这是所有设置的地方:
Do While mailRs.EOF = False
'Me.AttachDoc = "C:\EmailFolder\CouponForm.pdf"
  emTo = mailRs.Fields("EmailAddr").Value
  emFrom = "SportsParkInfo@skokieparks.org"
  emSubject = Me.Subject
  emtextBody = Me.TextMessage
这是发送电子邮件的电话
Call SendAMessage(emFrom, mailRs.Fields("EmailAddr").Value, _
                   emSubject, emtextBody, emAttach)
(我收到了从网上发送电子邮件的代码,它通过我们的邮件服务器运行良好.)
在上面,在调用@之前emtextBody = Me.TextMessage我需要Me.TextMessage用html文档的地址/主体替换.消息框是ACCESS表单上的textBox.我在ACCESS中找不到任何带有html的控件.我无法使用html文档的路径,因为这会产生错误.有没有办法解决这个问题
如果需要更多信息,我会很乐意提供.
谢谢你的时间.
JPL
小智 8
使用类似下面的代码.我已经包含了附件和html格式的元素,但是你可以用vba编写的任何东西也可以在vba中完成.
Sub SharePerformance()
Dim OutApp As Object
Dim OutMail As Object
Dim rng As Range
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.createitem(0)
'& "<a href=""\\server\folder"">\\server\folder</a>" &
msg1 = "Team,<br><br><b><DL>" & Range("b5").Value & "</b><br><ul><b><u>" & Range("b6").Value & "</b></u>"
msg1 = msg1 & "<DT><a HREF=C:\USER\Desktop\File1.xlsb>"
msg1 = msg1 & Range("b7").Value & "</a><br>"
msg1 = msg1 & "<b><u>" & Range("b9").Value & "</b></u></DL><br><br>"
msg1 = msg1 & "<p><img src=file://" & "C:\temp\Chart1.png" & "></p>" & "<br>"
On Error Resume Next
' Change the mail address and subject in the macro before you run it.
With OutMail
    .To = Range("B1").Value
    .cc = ""
    .BCC = ""
    .Subject = Range("B3").Value
    .HTMLBody = msg1
    '.Attachments.Add ActiveWorkbook.FullName
    '.Attachments.Add ("C:\temp\Chart1.png")
    '.Attachments.Add ("C:\temp\Chart2.png")
    .display
End With
SendKeys "^{ENTER}"
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
我无法判断SendAMessage您正在使用的函数内部有哪些代码,但我使用过的所有 VBA 示例似乎都以与 CDO.Message 对象相同的方式工作,如 MS 知识库文章KB286431中所示。在某些时候SendAMessage,会有一行将消息对象的.TextBody值指定为等于emtextBody您传入的参数。
一种解决方案可能是将您的 SendAMessage 函数复制到新函数 SendAMessageHTML 中,并替换它们设置的行,someMessage.TextBody = emtextBody以便您设置someMessage.HTMLBody = emtextBody
假设您的文本框包含与您类似的文本,"<html><head><body></body></html>"您可以修改现有函数以进行如下简单检查:
if Left(UCase(emtextBody),6) = "<HTML>" then
  someMessage.HTMLBody = emtextBody
else
  someMessage.TextBody = emtextBody
end if