SQL Server 2014 DB邮件未发送

时间:2019-04-10 19:50:29

标签: sql-server

我正在使用SQL Server 2014,并且正在爆炸...我的DB Mail无法发送,我的地方已经用光了。我仔细检查了对DBmail可执行文件的SQL帐户权限-它已读取并执行。我尝试了另一个具有相同未发送问题的邮件帐户和个人资料。

我正在按照此处所述的条件运行查询

步骤1

检查dbowner的权限

enter image description here

设置#2

USE MASTER
GO

SP_CONFIGURE 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO

SP_CONFIGURE 'Database Mail XPs', 1
RECONFIGURE WITH OVERRIDE
GO

SP_CONFIGURE 'show advanced options', 0
RECONFIGURE WITH OVERRIDE
GO

及以上查询成功运行,没有任何错误

enter image description here

第3步

使用以下查询配置数据库邮件

EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'P2PEmailNotifications',  
    @description = 'Profile used for sending outgoing notifications using Gmail.' ;  
GO

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
    @profile_name = 'P2PEmailNotifications',  
    @principal_name = 'public',  
    @is_default = 1 ;
GO

EXECUTE msdb.dbo.sysmail_add_account_sp  
    @account_name = 'MyGmail',  
    @description = 'Mail account for sending outgoing notifications.',  
    @email_address = 'MyGmailSMTPEMAIL@gmail.com',  
    @display_name = 'no-reply@ubl.com.pk',  
    @mailserver_name = 'smtp.gmail.com',
    @port = 555,
    @enable_ssl = 1,
    @username = 'MyGmailSMTPEMAIL@gmail.com',
    @password = 'xxxxxxx' ;  
GO

EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'P2PEmailNotifications',  
    @account_name = 'MyGmail',  
    @sequence_number =1 ;  
GO

第4步

现在,尝试通过以下查询执行dbmail:

EXEC [msdb].[dbo].[sp_send_dbmail] 
     @profile_name = 'P2PEmailNotifications', 
     @recipients = 'xxx.xxx.xxx@outlook.com', 
     @subject = @Subject2,
     @body = @Body2,
     @body_format = 'HTML'

输出

现在,在结果窗口中找不到任何错误。

enter image description here

第5步

因此,我得到了以下查询来检查发送dbmail并运行它时是否有任何错误:

SELECT * 
FROM msdb..sysmail_event_log 
ORDER BY log_id DESC

enter image description here

这是描述列中的错误:

  

由于邮件服务器故障,无法将邮件发送给收件人。 (使用帐户9(2019-04-11T00:21:06发送邮件。异常消息:无法连接到邮件服务器。(连接尝试失败,因为一段时间后被连接方未正确响应或建立了连接)失败,因为连接的主机未能响应64.233.167.109:555)。   )

SELECT * FROM dbo.sysmail_sentitems

enter image description here

看到错误后,我通过更改不同的gmail电子邮件并将端口555更改为587,重复了第3步,之后在描述列中收到以下错误

enter image description here

异常信息

  

异常类型:Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException

     

消息:无法从队列中检索项目。原因:可以发送此邮件的帐户列表为空(可能是由于使用了无效的配置文件)。

     

数据:System.Collections.ListDictionaryInternal
  TargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Controller.ICommand CreateSendMailCommand(Microsoft.SqlServer.Management.SqlIMail.Server.DataAccess.DBSession)
  帮助链接:NULL
  来源:DatabaseMailEngine

StackTrace信息

  

在Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandFactory.CreateSendMailCommand(DBSession dbSession)
  在Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandRunner.Run(DBSession db)      在Microsoft.SqlServer.Management.SqlIMail.IMailProcess.ThreadCallBack.MailOperation(Object obj)

结论

我有发送状态为“失败”的物品队列。正如我简短地描述我的问题。因此,我需要您的开发人员一些答案,以确保我在上述步骤中做错的事情是我遗漏了某些东西,或者这是SQL Server 2014的已知问题,我没有在其中进行搜索?还有其他可能的步骤来发送此邮件吗?

0 个答案:

没有答案