sql - xp_smtp_sendmail 空格随机添加到html

标签 sql html sendmail

我有一个过程,我在其中生成带有链接的小型 html 文档,并通过 xp_smtp_sendmail 过程将其发送出去。链接根据查询结果生成,链接较长。这在大多数情况下都有效。但是,有时链接会由于在查询字符串变量名称中插入空格而中断,例如 &Na me=John。

这可能因电子邮件客户端而异(相同的链接在 Gmail 中有效,但由于空格可能在 comcast 中无效。空格似乎是随机插入的,因此在每个损坏的电子邮件链接中,空格可能会破坏其他查询字符串变量。当我这样做时从 proc 打印链接是干净的,没有空格。

这是我在主过程中执行的邮件过程示例(获取查询结果并为@Message 生成 html)。无论我是否对网址进行编码,似乎都会插入空格。

预先感谢您的帮助。如果此处显示不正确,我可以发送更清晰的代码版本。

....上面的查询结果

SET @Message = NULL
SET @Message = @Message +
+ '<br/>Dear ' + @FirstName + ' ' + @LastName + ','
+ '<br/><br/>Recently you took "' + @Title + '". ' 
+ 'In response to the question "What is it?" ' 
+ 'you responded "' + @Response + '".' 
+ '<br/><br/>Following up on previous mailing'
+ '<br/><br/>Please click on the link below'
+ '<br/><br/><a href="' + @Link + '">Please click here</a>'
+ '<br/><br/>plain text'
+ '<br/><br/>plain text,'
+ '<br/><br/>plain text<br/>
plain text<br/>
plain text<br/>
plain text<br/>
plain text<br/>
plain text

EXEC @rc = master.dbo.xp_smtp_sendmail
 @FROM         = 'any@any.com',
 @FROM_NAME    = 'Any User',
 @TO           = @Email,
 @priority     = N'NORMAL',
 @subject      = N'My email',
 @message      = @Message,
 @messagefile  = N'',
 @type         = N'text/html', 
 @attachment   = N'',
 @attachments  = N'',
 @codepage     = 0,
 @server       = 'smtp.server.any'

最佳答案

1 - 检查您生成的消息的长度,如果长度接近 4000 个字符,则切换到从文件发送。

2 - 在每个句子或段落之前插入 cr/lf 字符。

3 - 确保在标签打开之前和之后有 cr/lf(如果 smtp 服务器喜欢这样,则只有 lf)

4 - 与任何你需要的人讨论缩短嵌入链接的长度 - 这显然是不可持续的

5 - 询问 smtp 服务器上的任何配置选项,以允许您将电子邮件作为完全编码的二进制文件发送(需要 MIME header 和 Base64 编码)

6 - 寻找 xp_smtp_sendmail 的更新替代品,也许是 .NET xp

关于sql - xp_smtp_sendmail 空格随机添加到html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315251/

相关文章:

zend-framework - 在 Magento 中更改发件人的电子邮件地址

SQL 将数据添加到已填充的单元格中

mysql - 判断 MySQL COALESCE 从哪个表返回了值

javascript - iframe 自动调整其高度以适应内容高度

Javascript 错误对浏览器的影响

php5 mail() 函数发送邮件错误

mysql - 获取具有最后分组行条件的行

sql - Oracle SQL。如何显示立即执行语句的结果

javascript - jQuery 用户界面 : My resize function is not working properly

linux - 如何在 Linux 的邮件命令中插入当前日期?