El propósito de este artículo es describir un método para automatizar el envío de correos electrónicos a partir de información disponible en una base de datos SQL Server, lo cual puede ser muy útil si utilizan Access con SQL Server.
En este primer artículo, explicaremos cómo configurar el servicio de DatabaseMail de SQL Server 2008 R2 Express. Probaremos dos configuraciones:
- Una con un servicio gratuito como GMail
- Otra con un servicio de correo provisto por un Hosting, en este caso BlueHost
En un segundo artículo, vamos a explicar como enviar los datos a partir de información disponible en nuestra base de datos, cómo darle formato al correo y cómo automatizar su envío.
Comencemos…
1. Habilitar DatabaseMail en SQL Server 2008 R2 Express
En la versión Express de SQL Server no disponemos del asistente para configurar DatabaseMail, por lo cual deberemos hacer el trabajo en forma manual. Primero abrimos SQL Server Management Studio y nos conectamos:
Con el botón derecho del mouse sobre el nombre de nuestro servidor ir a la opción Facets. Es posible que esta opción se demore en abrir:
Luego vamos a la opción Surface Area Configuration / DatabaseMailEnabled.
Ponemos el valor True.
Luego reiniciamos SQL Server con el botón derecho del mouse sobre el servidor, haciendo clic en Restart.
2. Configurar DatabaseMail para ser usado con GMail
Dentro de la base msdb vamos a utilizar un conjunto de procedimientos almacenados para configurar el correo, en este caso usando GMail como SMTP:
sysmail_add_account_sp
@account_name = 'Prueba',
@email_address = 'micuenta@gmail.com' ,
@display_name = 'Prueba DataBaseMail' ,
@replyto_address = 'noresponder@gmail.com' ,
@mailserver_name = 'smtp.gmail.com',
@mailserver_type = 'SMTP' ,
@port = 587,
@username = 'micuenta@gmail.com',
@password = '-----',
@enable_ssl = TRUE
sysmail_add_profile_sp @profile_name = 'Profile de prueba'
sysmail_add_profileaccount_sp
@profile_name = 'Profile de prueba' ,
@account_name = 'Prueba',
@sequence_number = 1
3. Enviar un correo de prueba
Para enviar un correo de prueba, podemos utilizar un procedimiento como el siguiente, siempre dentro de la base de datos msdb:
EXEC sp_send_dbmail @profile_name='Profile de prueba',
@recipients='jpussacq@gmail.com',
@subject='Mensaje de prueba',
@body='Mi primer prueba de Database Mail'
Y obtendremos un mensaje como el siguiente:
Mail queued.
Si todo funcionó bien, recibiremos el correo sin problemas. Sino, podemos explorar algunas de las opciones de la siguiente sección.
4 Análisis de problemas
Las siguientes consultas, nos pueden ayudar a hacer un análisis de los problemas y a conocer en qué estado quedaron nuestros correos:
select * from msdb.dbo.sysmail_sentitems
select * from msdb.dbo.sysmail_unsentitems
select * from msdb.dbo.sysmail_faileditems
Esta consulta nos puede brindar más información si el estado es failed:
SELECT
items.subject,
items.last_mod_date,
l.description
FROM dbo.sysmail_faileditems as items
INNER JOIN dbo.sysmail_event_log AS l
ON items.mailitem_id = l.mailitem_id
Si reciben un error como el siguiente “The server response was: 5.7.0 Must issue a STARTTLS command first”, lo más probable es que hayamos olvidado configurar la opción de SSL en la cuenta.
5. Configurar DatabaseMail para ser usado con BlueHost
Es similar al caso de Gmail, pero con las opciones de Blue Host.
USE msdb
GO
sysmail_add_account_sp
@account_name = 'Blue Host Mail',
@email_address = 'cuenta@midominio.com' ,
@display_name = '---' ,
@replyto_address = 'noresponder@---' ,
@mailserver_name = 'mail.midominio.com',
@mailserver_type = 'SMTP' ,
@port = 26,
@username = 'cuenta@midominio.com',
@password = '---',
@enable_ssl = FALSE
GO
sysmail_add_profile_sp @profile_name = 'Perfil Blue Host'
GO
sysmail_add_profileaccount_sp
@profile_name = 'Perfil Blue Host' ,
@account_name = 'Blue Host Mail',
@sequence_number = 1
GO
EXEC sp_send_dbmail @profile_name='Perfil Blue Host',
@recipients='jpussacq@gmail.com',
@subject='Mensaje de prueba',
@body='Este es un mensaje de prueba del sistema'
Artículos relacionados:
- Sending SMTP mail in SQL Server 2008 R2 Express http://stackoverflow.com/questions/3344808/sending-smtp-mail-in-sql-server-2008-r2-express
- Setup SQL Server Database Mail to use a Gmail, Hotmail, Yahoo or AOL account: http://www.mssqltips.com/sqlservertip/2578/setup-sql-server-database-mail-to-use-a-gmail-hotmail-yahoo-or-aol-account/
- Gmail. Cómo configurar el acceso POP en clientes de correo: http://support.google.com/mail/bin/answer.py?hl=es&answer=13287
- Bluehost Web Hosting Help Email Setup in any client: https://my.bluehost.com/cgi/help/26
- Database Mail Configuration Stored Procedures: http://msdn.microsoft.com/en-us/library/ms175862(v=sql.105).aspx
- Sp_send_dbmail (Transact-SQL) http://msdn.microsoft.com/es-es/library/ms190307(v=sql.105).aspx
- Troubleshooting Database Mail http://msdn.microsoft.com/en-us/library/ms188663(v=sql.105).aspx
No hay comentarios:
Publicar un comentario