为什么msdb.dbo.sp_send_dbmail不起作用?

时间:2017-06-14 09:17:52

标签: sql sql-server tsql sql-server-2008-r2 sp-send-dbmail

关于 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阻止该消息。

0 个答案:

没有答案