Configuración cuenta de correo mediante SQL.
https://technet.microsoft.com/es-es/library/ms191207(v=sql.105).aspx
ó
http://geeks.ms/blogs/rcarreras/archive/2009/09/16/configurando-sql-server-2008-para-enviar-emails-paso-a-paso.aspx
A continuación:
Cuando queremos enviar un email de base de datos (mediante triggers, storeds, etc.) nos encontramos con el problema de permisos. Ya que para enviar un email, se debe llamar a una stored definida en la base de datos msdb.
sp_send_dbmail
Si usamos esta instrucción en nuestra base de datos de cliente, al loguearnos con un usuario que no es administrador, (por ejemplo el usuario “ahora” del ERP) no funciona porque da error de permisos.
Una posible solución es crearnos una stored en la base de datos msdb y darle permisos “public”.
Código SQL:
USE msdb GO Create PROCEDURE [dbo].[_TestSendMail] ( @To NVARCHAR(1000), @Subject NVARCHAR(100), @Body NVARCHAR(MAX) ) --1. No necesita WITH EXECUTE AS dbo--OWNER AS BEGIN EXEC dbo.sp_send_dbmail @profile_name = N'miperfildecorreo’, @recipients = @To, @subject = @Subject, @body = @Body END go GRANT EXECUTE ON OBJECT::_TestSendMail TO public go
De esta manera, puede ser llamada desde cualquier base de datos del servidor y con cualquier usuario.
NOTA: Para los que usáis xp_sendmail
Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Para enviar correo desde SQL Server, utilice Correo electrónico de base de datos.
Código SQL:
--1- Crear la stored y asignarle permisos USE msdb GO Create PROCEDURE [dbo].[_TestSendMail] ( @To NVARCHAR(1000), @Subject NVARCHAR(100), @Body NVARCHAR(MAX) ) --1. No necesita WITH EXECUTE AS dbo--OWNER AS BEGIN EXEC dbo.sp_send_dbmail @profile_name = N'miperfildecorreo’, @recipients = @To, @subject = @Subject, @body = @Body END go GRANT EXECUTE ON OBJECT::_TestSendMail TO public go --2- Asignar permisos al perfil de la cuenta de correo de base de datos. EXECUTE msdb.dbo.sysmail_add_principalprofile_sp @principal_name = 'public', @profile_name = 'miperfildecorreo', @is_default = 1 ; --3- Llamar a la stored use MIBD go exec msdb.dbo._TestSendMail 'mimail@midominio.es','Asunto','Contenido' go
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo