通过sqlserver在电子邮件中发送html表单控件

时间:2014-06-20 05:19:14

标签: html sql-server outlook-2010

我正在尝试从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。

有没有办法让这些表单元素在邮件本身呈现,而不是去浏览器..?

2 个答案:

答案 0 :(得分:1)

从2007年开始,Outlook中不支持HTML表单标记,包括在Outlook 2010中。它被视为存在安全风险。

实际上它不是SQL-Server问题,它是一个电子邮件客户端问题。如下图所示,许多客户端不支持表单标记。

enter image description here

来自此网址的图片:http://css-tricks.com/html-forms-in-html-emails/

答案 1 :(得分:0)

经过一些研究,很明显,Outlook邮件客户端不支持表单标签和其他元素,如按钮或文本框。但是当您使用outlook OWA的在线版本时,表单元素和其他输入元素仍然有效。

但在OWA中,脚本也不会被执行。在桌面版本中,将有一个选项可以在Web浏览器中查看该消息,这将使一切正常,就像网页一样。

正如其他人所指出的,似乎存在一些严重的安全问题。例如,如果表单是由目标收件人提交的,则无法进行身份验证。任何有权访问html代码的人都可以填写并提交它,因为没有方法来验证提交者。

Microsoft Infopath或Outlook的自定义表单可用于此目的。