在过去的几天里,我试图通过以下程序解决发送电子邮件的问题(我省略了一些部分):
DECLARE
[...]
@Product varchar(64),
@Subj varchar(255),
[...]
SELECT @Subj = 'New ' + @ListType + ' Release in ''' + @Product + ' ' + @Country + ''' ' + @StatusChange
[...]
EXEC msdb.dbo.sp_send_dbmail
@recipients = @EMail,
@copy_recipients = @CCMail,
@subject = @Subj
[...]
如果在@Product 变量中是空格(来自其他表的查询),即橙色(白色),则电子邮件未发送,错误消息如下:
“由于邮件服务器故障,无法将邮件发送给收件人。(发送使用帐户异常消息的邮件:无法将邮件发送到邮件服务器。(指定的字符串不是主题所需的格式。)“。如果变量中有空格,似乎无法发送消息,但另一方面,如果我更改查询:
SELECT @Subj = 'New ' + @ListType + ' Release in ''' + ' oranges (white) ' + ' ' + @Country + ''' ' + @StatusChange
发送电子邮件没有问题。此外,如果我将字符串直接分配给@subject,发送电子邮件也没有问题。如果变量@Product 中没有空格,一切正常......
我已经尝试了几种不同的方法来解决这个问题,但仍然没有成功(并在不同的论坛上查看了大量条目......):
1。在其中一个论坛上,我发现检查有关发送电子邮件的帐户的 SQLAgent 条目 - 没有解决问题
2. 重新启动服务器/服务 - 没有帮助
3. 对 @product 变量进行强制转换Cast(@product as CHAR(25))
,会出现同样的问题
4. 分配@subj 变量到不同的变量,后一个用作@subject - 没有帮助
操作系统:win 2008 std x86
SQL:2008 std x86(包含所有当前更新)
消息服务器:Exchange 2010(包含所有当前 sp 和更新)
Telnet:工作正常...
发送测试电子邮件没问题。从头到尾没有其他问题SQL
...
感谢您对此的帮助!
此致,
托马斯