关于 msdb.dbo.sp_send_dbmail
,我面临一个非常特殊的问题什么有用:
我正在使用msdb.dbo.sp_send_dbmail从不同的存储过程发送电子邮件。 有效。没问题。
什么行不通:
现在,当我把它放在 SQL JOB 中时,它不起作用,即发送到smtp服务器(gmail),但是smtp会抛出错误,即消息被阻止。
只有当我从同一台服务器发送 JOB 时才会发生这种情况,但是当我在存储过程中使用它或手动使用静态值时它会起作用。
到目前为止我检查过的内容:
我已经检查过,工作正在运行。它有效,但smtp会抛出错误:
邮件被阻止 您发送给abc@gmail.com的邮件已被封锁。有关详细信息,请参阅下面的技术详细信息。
为什么?
工作步骤代码:
IF EXISTS( select * from MC_Complaints.dbo.Complaints cs where cs.OverDue= 1 AND ISNULL(EmailSent,0)= 0)
Begin
Declare @Codes varchar(max)
Set @Codes= (select
distinct
stuff((
select ', ' + cs.Code
from MC_Complaints.dbo.Complaints cs where cs.OverDue= 1 AND ISNULL(EmailSent,0)= 0
order by cs.Code asc
for xml path('')
),1,1,'') as codeslist
from MC_Complaints.dbo.Complaints cs)
Declare @Body varchar(max)
Set @Body= 'Overdue complaints: '+ @Codes
exec MC_Complaints.dbo.SendMail @Body, 'Overdue complaints'
Update Complaints
Set EmailSent=1
where OverDue=1
End
SendMail sp代码:
EXEC msdb.dbo.sp_send_dbmail
@profile_name='CMS',
@recipients=@EmailAddresses,
@subject= @Subject,
@body= @Body
更新:
如果是关于权限的,那么它就不会将其发送到Gmail。我检查了日志,它显示电子邮件已从sql server发送,但gmail无法进一步发送。
更新:
当我从其他服务器而不是其他服务器发送它时,会发生这种情况,但问题是gmail阻止该消息。