Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido HTML

Estas en el tema de SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido HTML en el foro de SQL Server en Foros del Web. Me pueden ayudar con lo siguiente: Como agregar en el envió de correo de sql variables dentro de @body para que vaya información de SQL ...
  #1 (permalink)  
Antiguo 22/02/2013, 11:24
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 11 meses
Puntos: 3
Pregunta SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido HTML

Me pueden ayudar con lo siguiente:

Como agregar en el envió de correo de sql variables dentro de @body para que vaya información de SQL sobre contenido HTML?????

utilizo lo siguiente para enviar el correo lo recibo bien pero necesito que la variable @mivarible muestre su valor dentro de la variable @body ¿como hago eso?

Código SQL:
Ver original
  1. EXEC msdb.dbo.sp_send_dbmail    
  2. @profile_name='usuarios' ,
  3. @recipients= '[email protected]',
  4. @subject= 'Actualización Cuenta de correo ',
  5.  
  6. @body = '
  7.  
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  11. <title>Untitled Page</title>
  12. </head>
  13. <body>
  14. blbalablabala
  15. @mivarible
  16. </body>
  17. </html>',
  18. @body_format = 'HTML'

Muchas gracias
Saludos

Última edición por gnzsoloyo; 22/02/2013 a las 11:32
  #2 (permalink)  
Antiguo 22/02/2013, 12:41
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido H

Prueba declarando antes tus cadenas.
Código SQL:
Ver original
  1. DECLARE @mivariable VARCHAR
  2. DECLARE @mibody VARCHAR
  3. SET @mibody = '
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7. <title>Untitled Page</title>
  8. </head>
  9. <body>
  10. blbalablabala' + @mivariable + '</body>
  11. </html>'
  12.  
  13. EXEC msdb.dbo.sp_send_dbmail    
  14. @profile_name='usuarios' ,
  15. @recipients= '[email protected]',
  16. @subject= 'Actualización Cuenta de correo ',
  17.  
  18. @body = @mibody,
  19. @body_format = 'HTML'
  #3 (permalink)  
Antiguo 22/02/2013, 16:45
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 11 meses
Puntos: 3
Sonrisa Respuesta: SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido H

Gracias NullZ3r0 me funciono muy bien. ese script lo meti en una funcion y intente llamarla desde una consulta que regresa 5 registros cada registro tiene un id el cual se le manda a la funcion y esta envia el correo el problema esta en que cuando ejecuto la consulta me manda el siguiente mensaje:



Msg 557, Level 16, State 2, Line 1
Only functions and some extended stored procedures can be executed from within a function.




---Supongo que es por que no se puede invocar dese una query sino desde un store también hice esa prueba y marca lo mismo. ¿Como lo podría resolver?

muchas gracias
  #4 (permalink)  
Antiguo 22/02/2013, 16:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido H

no puedes invocar un procedure desde una funcion por eso te marca ese error
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 22/02/2013, 16:56
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 11 meses
Puntos: 3
Sonrisa Respuesta: SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido H

Cita:
Iniciado por Libras Ver Mensaje
no puedes invocar un procedure desde una función por eso te marca ese error
Gracias por tu respuesta libras,

Solo estoy llamando a la funcion la cual envía el correo pero comentarice toda la función y lo único que deje fue un texto el cual me regresa cuando la invoco, al momento de que descomentarizo la parte del envió de correo y llamo dicha función desde otra ventana de consulta me lanza ese mensaje. las funciones pueden usarse para enviar correos ? o se tienen que poner sobre un procedimiento?
  #6 (permalink)  
Antiguo 22/02/2013, 17:00
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido H

seria sobre un procedimiento con una funcion no vas a poder, porque estas usando un procedure del sistema msdb.dbo.sp_send_dbmail, ahora dices que los datos los sacas de una funcion cierto? porque no haces un procedure que ejecute tu funcion y mande el correo?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 22/02/2013, 17:06
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido H

Cita:
Iniciado por Libras Ver Mensaje
seria sobre un procedimiento con una funcion no vas a poder, porque estas usando un procedure del sistema msdb.dbo.sp_send_dbmail, ahora dices que los datos los sacas de una funcion cierto? porque no haces un procedure que ejecute tu funcion y mande el correo?
Gracias Libras,

Realizare la prueba,
Saludos
  #8 (permalink)  
Antiguo 19/06/2013, 08:00
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: SQL SERVER 2005/2008 envió de mail con variables sql dentro de contenido H

Les dejo la solución:



--Datos del usuario
Declare @usuario as nvarchar(70)
Declare @mail as nvarchar(100)
Declare @pass as nvarchar(100)
declare @nombre as nvarchar(250)

select @nombre='Kanon',
@mail='[email protected]',@pass='kanon'

--CONTENIDO DEL CORREO
declare @html varchar(4000)='<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Untitled Page</title>
<style type="text/css">
#contenedor-mains
{ margin:20px; width:800px;}
#contenedor-mains div { background:#fff; font-family:Arial; }
#cuentaUsr{ border:1px solid #FF0100; width:350px; }
#Pie{ width:800px; }
p{ font-size: 12p; }
</style>
</head>
<body>
<div id="contenedor-mains">
<p>
<b>Estimado(a) '+@nombre+'</b>
</p>

<p>Saludos '+@nombre+' </p>

<p><b>Información de la cuenta:</b></p>

<TABLE WIDTH="200" BORDER="1" BGCOLOR="#F0ECFF" cellspacing="0" cellpadding="0" align="center">
<TR ALIGN = "center">
<TD WIDTH="100"><b>Usuario</b></TD>
<TD WIDTH="100"><b>Contraseña</b></TD>
</TR>
<TR>
<TD>'+@mail+'</TD>
<TD> '+@pass+'</TD>
</TR>
</TABLE>

<div id="Pie">
<h5>Favor de no responder este correo</h5>
</div>
</div>
</body>
</html>'


EXEC msdb.dbo.sp_send_dbmail
@profile_name='enviamail',
@recipients='[email protected]',
@blind_copy_recipients ='[email protected]',
@subject= 'Actualización',
@body = @html,
@body_format = 'HTML'

Etiquetas: bases-de-datos-general, mail, parametros, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:11.