Sample Header Ad - 728x90

sp_send_dbmail fails: Cannot send mails to mail server

1 vote
3 answers
12518 views
I am trying to set up email from my SQL Server 2014 installation. As I have the Express Edition, I do not have the Database mail wizard, but I seem to have all the stored procedures in the msdb database. The error message is: *The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account X (date). Exception Message: Cannot send mails to mail server. (Failure sending mail.).* It seems to me that the error indicates a problem with the email connection, rather than SQL Server, so I tried to send from a different email address – but with the same error. Both of these outgoing email addresses work reliably for my normal work (using Thunderbird). The set-up data was copied from Thunderbird. I have used the set-up SQL from 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 = 'somebody@gmail.com', @mailserver_name = 'smtp.googlemail.com', @port=465, @enable_ssl=1, @username='somebody@gmail.com', @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; The above is not intended to be run as a single script; each step was performed separately and each step worked. Email was tested with: --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 = 'somebodyelse@yahoo.co.uk', @body = 'Database Mail Testing', @subject = 'Database Mail from SQL Server'; select * from msdb.dbo.sysmail_event_log Then try a different email address: 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 = 'somebody3@gmx.co.uk', @display_name = 'Alternate GMX', @port=465, @enable_ssl=1, @username='somebody3@gmx.co.uk', @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 But this also failed with the same error. There are no messages in the SQL Server logs nor my firewall log. I have tried some diagnostics that web searches have suggested: 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 All the return values are normal, so I’ve not posted a duplicate of the set-up data. My only problem is that setting LoggingLevel to verbose does not seem to have any effect – is that data stored elsewhere that I have not looked? Any hints would be appreciated, either to fix the problem or for more diagnostics. Thank you.
Asked by Peter Bill (153 rep)
Jan 26, 2017, 09:48 AM
Last activity: Sep 29, 2023, 09:38 AM