我正在尝试从sqlserver发送一封包含文本字段和按钮等html表单元素的电子邮件。
这是我的剧本
Declare @Body varchar(max)
set @Body = '<html>
<body>
<form action="http://localhost:8080/Email_test/TestServlet.do" method="post">
<input type="text" name="test_input" id="test_input" value=""/>
<input type="submit" value="update"/>
</form>
</body>
</html>
'
exec sp_send_dbmail
@profile_name = 'test_profile',
@recipients='me@example.com',
@subject = 'This is a test form',
@body = @Body,
@body_format = 'HTML';
上述脚本运行正常,并向目标收件人发送一封电子邮件,但有一个问题。 邮件中不存在表单元素,并且邮件的最顶部显示一条消息,表示&#34;如果此邮件的邮件未正确显示,请单击此处在Web浏览器中打开它&#34;。
我正在使用microsoft outlook 2010。
有没有办法让这些表单元素在邮件本身呈现,而不是去浏览器..?
答案 0 :(得分:1)
从2007年开始,Outlook中不支持HTML表单标记,包括在Outlook 2010中。它被视为存在安全风险。
实际上它不是SQL-Server问题,它是一个电子邮件客户端问题。如下图所示,许多客户端不支持表单标记。
答案 1 :(得分:0)
经过一些研究,很明显,Outlook邮件客户端不支持表单标签和其他元素,如按钮或文本框。但是当您使用outlook OWA的在线版本时,表单元素和其他输入元素仍然有效。
但在OWA中,脚本也不会被执行。在桌面版本中,将有一个选项可以在Web浏览器中查看该消息,这将使一切正常,就像网页一样。
正如其他人所指出的,似乎存在一些严重的安全问题。例如,如果表单是由目标收件人提交的,则无法进行身份验证。任何有权访问html代码的人都可以填写并提交它,因为没有方法来验证提交者。
Microsoft Infopath或Outlook的自定义表单可用于此目的。