Почта поставлена ​​в очередь, но не доставлена ​​в SQL Server 2014

Я пытаюсь отправить результат SQL-запроса по электронной почте с помощью SQL Server 2014. Проблема в том, что электронные письма ставятся в очередь, но не доставляются получателю. Есть некоторые проблемы с подключением к серверу. Описание, которое я получаю:

Почта не может быть отправлена ​​получателям из-за сбоя почтового сервера. (Отправка почты с использованием учетной записи 1 (2017-04-05T16:05:09). Сообщение об исключении: не удалось подключиться к почтовому серверу. (Попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через некоторое время или установила соединение не удалось, поскольку подключенный хост не смог ответить 74.125.130.109:25).

Мой код:

EXECUTE msdb.dbo.sysmail_add_account_sp  
     @account_name = 'MIS_Automation_Project',  
     @description = 'Mail account for office files.',  
     @email_address = 'my_email_address',  
     @display_name = 'MIS_Automation',  
     @mailserver_name = 'smtp.gmail.com' ;  

-- Create a Database Mail profile  
EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'MIS_Automation',  
    @description = 'Profile used for mis automation project' ;

-- Add the account to the profile  
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'MIS_Automation',  
    @account_name = 'MIS_Automation_Project',  
    @sequence_number =1 ;

-- Grant access to the profile to the DBMailUsers role  
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
    @profile_name = 'MIS_Automation',  
    @principal_name = 'guest',  
    @is_default = 1 ; 

DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)

SET @xml = CAST(( SELECT [clno] AS 'td','',[clname] AS 'td','',
[cladd] AS 'td'
FROM  Client  
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))

SET @body ='<html><body><H3>Client Information</H3>
<table border = 1> 
<tr>
<th> Client No </th> <th> Client Name </th> <th> Client Address </th>
</tr>'  

SET @body = @body + @xml +'</table></body></html>'

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'MIS_Automation', -- replace with your SQL Database Mail Profile 
    @body = @body,
    @body_format ='HTML',
    @recipients = 'recipient', -- replace with your email address
    @subject = 'E-mail in Tabular Format' ;

Как я могу решить эту проблему?


person aneri    schedule 10.04.2017    source источник
comment
Можете ли вы проверить журнал ошибок электронной почты, щелкнув правой кнопкой мыши агент sql   -  person TheGameiswar    schedule 10.04.2017


Ответы (1)


Насколько я помню, вы использовали неправильный метод аутентификации для подключения к SMTP-серверу Google (сообщение об ошибке указывает, что вы пытаетесь подключиться к порту 25, но Google использует защищенный порт SSL 465, насколько я помню). Более того, учетные данные не передаются, и поэтому он пытается использовать анонимную аутентификацию, которая, я думаю, также не будет работать с gmail).

Итак, для устранения неполадок вы можете начать с простой проверки:

Подключитесь к SQL Server через SSMS и перейдите в раздел Управление -> Почта базы данных -> Настройка почты базы данных -> Управление учетными записями и профилями почты базы данных -> Просмотр, изменение или удаление существующей учетной записи и проверка настроек там. У вас должен быть включен SSL (с указанным портом 465) и базовая аутентификация.

Другая моя мысль заключается в том, что брандмауэр блокирует соединение, поэтому стоит проверить второй пункт.

Если это по-прежнему не работает, может быть полезна следующая статья: https://technet.microsoft.com/en-us/library/ms187540%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396

person GrzegorzO    schedule 19.05.2017