#sql-server #express #email #ssms #email-notifications
Вопрос:
Я пытаюсь настроить почту базы данных SQL для отправки электронной почты Gmail в Gmail, но я получил: Сообщение Почта не может быть отправлена получателям из-за сбоя почтового сервера. (Отправка почты с использованием учетной записи 1 (2021-04-14T09:21:14). Сообщение об исключении: Не удается отправить почту на почтовый сервер. (Сбой при отправке почты.). )
Я не знаю, что я делаю не так.
—- создайте учетную запись базы данных —-
Use MSDB
go
IF NOT EXISTS(SELECT * FROM msdb.dbo.sysmail_account WHERE name = 'SQLServer Express')
BEGIN
--CREATE Account [SQLServer Express]
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'SQLServer Express',
@email_address = 'sangitar23@gmail.com',
@display_name = 'Audit Partnership',
@replyto_address = '',
@description = '',
@mailserver_name = 'smtp.gmail.com',
@mailserver_type = 'SMTP',
@port = '587',
@username ='sangitar23@gmail.com',
@password = 'Atlanta2020!',
@use_default_credentials = 0 ,
@enable_ssl = 1 ;
END --IF EXISTS account
------ create the database mail profile --------
Use MSDB
go
IF NOT EXISTS(SELECT * FROM msdb.dbo.sysmail_profile WHERE name = 'SQLServer Express Edition')
BEGIN
--CREATE Profile [SQLServer Express Edition]
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'SQLServer Express Edition',
@description = 'This db mail account is used by SQL Server Express edition.';
END --IF EXISTS profile
———— Чтобы назначить учетную запись почты базы данных профилю почты базы данных———
Use MSDB
go
IF NOT EXISTS(SELECT *
FROM msdb.dbo.sysmail_profileaccount pa
INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id
INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id
WHERE p.name = 'SQLServer Express Edition'
AND a.name = 'SQLServer Express')
BEGIN
-- Associate Account [SQLServer Express] to Profile [SQLServer Express Edition]
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'SQLServer Express Edition',
@account_name = 'SQLServer Express',
@sequence_number = 1 ;
END
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQLServer Express Edition',
@recipients = 'sangitarai023@gmail.com',
@body = 'Email notification for Audit Partnership SFTP',
@subject = ' This email has been sent from SQL Server to notify, client uploaded data on the SFTP cite' ;
Комментарии:
1. Вы зашли на страницу безопасности своего профиля Google и включили «Менее безопасный доступ к приложениям» или «Доступ третьих лиц»? По умолчанию Gmail SMTP использует механизм аутентификации в стиле OpenID, который не поддерживается .NET SmtpClient, с помощью которого реализован процессор очереди почты базы данных. Вам необходимо создать пароль для конкретного приложения и использовать его в параметре учетной записи почты базы
@password
данных.2. да, это не сработало