首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何发送带有Outlook的电子邮件正文中的HTML附件(超链接)

如何发送带有Outlook的电子邮件正文中的HTML附件(超链接)
EN

Stack Overflow用户
提问于 2021-06-15 21:28:17
回答 1查看 450关注 0票数 1

设想情况:

从带有选定记录集的访问表单中,报表中填充了数据,通过VBA将其转换为HTML格式并与Outlook一起发送。然后,内容在收件人的电子邮件正文中显示为HTML。这包含指向此窗体中记录集的链接。因此,假设接收方也具有访问权限,并且具有完全相同的数据库(以及相同的位置和内容),则链接将在单击时打开他的数据库文件,然后打开表单,然后使用查询打开准确的记录。

基于这个..。

...I在我的报告中添加了一个文本字段,并将其标记为超链接:

Click here#C:\MainDatabase.accdb#Query frmForm01

单击报表中的超链接(打开Access & file),本地存储的HTML中的链接也能工作。

问题:

虽然链接是发送的,也出现在收件人的电子邮件正文中作为链接“点击这里”,但显示的链接是不可点击的,只有蓝色下划线的文本!

经过大量的实验,我发现这都是Outlook!在sending....it之前,该链接在Outlook邮件正文预览中是完整的,它必须是一个Outlook设置,可以在发送/发送期间将链接转换为文本。在Outlook菜单中,我已经检查了格式设置:“转换为HTML是确定的!”(不是纯文本)。那还能有什么原因?

会非常感激你的解决方案。谢谢!

我的代码:

代码语言:javascript
运行
复制
Sub CreateHTMLMail()

Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Dim FSO As Object
Dim AttchFile As String, EmailTo As String, strSig As String

Set OutApp = New Outlook.Application
Set OutMail = OutApp.CreateItem(olMailItem)

    AttchFile = "C:\AttachmTemp.htm"
    EmailTo = "abcd@efgh.com"

    DoCmd.OpenReport "NewReport", acViewReport, , "[ID]='" & Me.ID & "'", acHidden
    DoCmd.OutputTo acOutputReport, "NewReport", acFormatHTML, AttchFile
    
Set FSO = CreateObject("Scripting.FileSystemObject")

strSig = FSO.OpenTextFile(AttchFile).ReadAll
        
    With OutMail
    .TO = EmailTo
    .Subject = "New Message"
    .BodyFormat = olFormatHTML
    .HTMLBody = strSig
    .send
    End With

End If

Kill AttchFile

Set OutApp = Nothing
Set OutMail = Nothing

End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 22:17:45

我使用自定义的URL协议处理程序来完成这个任务。

首先,创建(并在测试后分发)这样的.reg文件(用应用程序名称替换myapp ):

代码语言:javascript
运行
复制
Windows Registry Editor Version 5.00

; Andre, 2019

[HKEY_CLASSES_ROOT\myapp]
@="URL:myapp-Open"
"URL Protocol"=""
"EditFlags"=hex:02,00,00,00

[HKEY_CLASSES_ROOT\myapp\DefaultIcon]
@="C:\\path\\myapp\\myapp.ico"

[HKEY_CLASSES_ROOT\myapp\shell]
@="open"

[HKEY_CLASSES_ROOT\myapp\shell\open]

[HKEY_CLASSES_ROOT\myapp\shell\open\command]
; using a .vbs to start my app
; @="wscript C:\\path\\myapp\\Startmyapp.vbs \"%1\""
; (untested) starting Access directly, needs the /cmd switch
@="\"C:\\Program Files (x86)\\Microsoft Office\\Office16\\msaccess.exe\" C:\\path\\myapp\\Myapp.accde /cmd \"%1\""

; If you use Outlook, prevent the Security warning
; https://stackoverflow.com/a/34660198/3820271
; Note: the whole subtree starting with (at least) "Security" will be created.
; This path is for Office 2016.
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\Common\Security\Trusted Protocols\All Applications\myapp:]

请注意,我使用.vbs脚本启动我的Access应用程序,它也应该与msaccess.exe路径和本地前端一起工作。

参见myapp\shell\open\命令中的注释

然后,在HTML电子邮件中,使用如下URL:

代码语言:javascript
运行
复制
url:myapp:ID:2357     

ID:2357将作为命令行参数传递给应用程序。

有关如何读取此字符串,然后在Autoexec函数中解析该字符串并打开窗体,请参见Opening Microsoft Access with parameters

要测试这一点,只需在Start/Run或Cmd窗口中键入myapp:ID:2357

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67993711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档