Estou tentando configurar o email da minha instalação do SQL Server 2014. Como tenho a Express Edition, não tenho o assistente de correio de banco de dados, mas parece que tenho todos os procedimentos armazenados no banco de dados msdb.
A mensagem de erro é: O email não pôde ser enviado aos destinatários devido à falha do servidor de email. (Enviando e-mail usando a conta X (data). Mensagem de exceção: Não é possível enviar e-mails para o servidor de e-mail. (Falha ao enviar e-mail.).
Parece-me que o erro indica um problema com a conexão de e-mail, em vez do SQL Server, então tentei enviar de um endereço de e-mail diferente – mas com o mesmo erro. Ambos os endereços de e-mail de saída funcionam de forma confiável para o meu trabalho normal (usando o Thunderbird). Os dados de configuração foram copiados do Thunderbird.
Eu usei o SQL de configuração de https://www.codeproject.com/articles/485124/configuring-database-mail-in-sql-server
-- Enable service broker in the MSDB database.
USE [master]
GO
ALTER DATABASE [MSDB] SET ENABLE_BROKER WITH NO_WAIT
GO
--Enabling Database Mail
sp_configure 'show advanced options',1
reconfigure;
GO
-- Enable the db mail feature at server level
sp_configure 'Database Mail XPs',1
reconfigure;
--Creating a Profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'SQLProfile',
@description = 'Mail Service for SQL Server' ;
-- Create a Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'SQL_Email_Account',
@email_address = '[email protected]',
@mailserver_name = 'smtp.googlemail.com',
@port=465,
@enable_ssl=1,
@username='[email protected]',
@password='Emailid password'
-- TODO ENSURE VALID PASSWORD FOR THE ACCOUNT IS ENTERED ABOVE
-- Adding the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'SQLProfile',
@account_name = 'SQL_Email_Account',
@sequence_number =1 ;
-- Granting access to the profile to the DatabaseMailUserRole of MSDB
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'SQLProfile',
@principal_id = 0,
@is_default = 1;
O acima não se destina a ser executado como um único script; cada etapa foi realizada separadamente e cada etapa funcionou.
O e-mail foi testado com:
--Sending Test Mail
-- See https://msdn.microsoft.com/en-us/library/ms190307.aspx for all arguments
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQLProfile',
@recipients = '[email protected]',
@body = 'Database Mail Testing',
@subject = 'Database Mail from SQL Server';
select * from msdb.dbo.sysmail_event_log
Em seguida, tente um endereço de e-mail diferente:
USE [master]
GO
-- Create a Database Mail account 2
EXEC msdb.dbo.sysmail_add_account_sp
@account_name = 'SQL_Email_Account 2',
@description = 'Alternative Mail account',
@email_address = '[email protected]',
@display_name = 'Alternate GMX',
@port=465,
@enable_ssl=1,
@username='[email protected]',
@password='ValidPassword',
@mailserver_name = 'mail.gmx.com';
GO
-- Add the account 2 to the profile
EXEC msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'SQLProfile',
@account_name = 'SQL_Email_Account 2',
@sequence_number = 2 ;
-- Make one not the default
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'SQLProfile',
@principal_name = 'public',
@is_default = 0 ;
-- Show the new default profile
EXEC msdb.dbo.sysmail_help_principalprofile_sp
Mas isso também falhou com o mesmo erro. Não há mensagens nos logs do SQL Server nem no log do meu firewall.
Eu tentei alguns diagnósticos que as pesquisas na web sugeriram:
Use msdb
Go
select * from sysmail_profile
select * from sysmail_account
select * from sysmail_profileaccount where profile_id=1
select * from sysmail_server
EXEC msdb.dbo.sysmail_help_account_sp;
EXEC msdb.dbo.sysmail_help_profileaccount_sp @profile_name = 'SQLProfile';
EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
EXEC msdb.dbo.sysmail_help_principalprofile_sp;
EXEC msdb.dbo.sysmail_help_status_sp;
exec [dbo].[sysmail_configure_sp] 'LoggingLevel', 3
Todos os valores de retorno são normais, então não postei uma duplicata dos dados de configuração. Meu único problema é que definir LoggingLevel como detalhado não parece ter nenhum efeito - esses dados estão armazenados em outro lugar que eu não olhei?
Quaisquer dicas seriam apreciadas, seja para corrigir o problema ou para mais diagnósticos. Obrigada.