none
Correo sin body RRS feed

  • Pregunta

  • --exec [dbo].[FECHA] '10-11-2011'
    ALTER PROCEDURE [dbo].[FECHA]
    AS
    DECLARE @FECHA AS DATETIME
    DECLARE @DIFFECHA AS INT
    DECLARE @ORIGINATOR  AS VARCHAR (200)
    DECLARE @subject AS NVARCHAR (200);
    DECLARE @query AS NVARCHAR (MAX);
    DECLARE @profilename AS VARCHAR (50);
    DECLARE @CORREO VARCHAR(500)
    DECLARE @CIUDAD VARCHAR(50)
    DECLARE @PROCESO INT
    DECLARE @PRO VARCHAR(50)
    DECLARE @PER VARCHAR(50)
    DECLARE @message VARCHAR(500)
    BEGIN
    DECLARE CURSORFECHA CURSOR FOR 
    SELECT DISTINCT FECHA,Ciudad,Proceso FROM DBO.REPORTES 
    WHERE Fecha_Solucion_Programada IS NULL
    AND DATEDIFF(dd,FECHA,getdate()) = 8
    		
    	OPEN CURSORFECHA
    		FETCH CURSORFECHA INTO @FECHA,@CIUDAD,@PROCESO
    		WHILE @@FETCH_STATUS = 0
    		BEGIN
    			SELECT @PRO = Nombre FROM  dbo.PROCESOS WHERE Ciudad = @CIUDAD and ID = @PROCESO
    			SELECT @PER = Nombre FROM dbo.REPORTES WHERE ID=@PROCESO and Ciudad = @CIUDAD					
    				
    			SELECT @CORREO = 
    			stuff( (
    				SELECT ';' + Correo   
    				FROM ENCARGADOS WHERE Ciudad = @CIUDAD and Proceso=@PROCESO
    			FOR xml path('') ) ,1,1,'' )						
    										
    			SET @profilename = 'SQL Process';
    			SET @subject = 'Reporte de incidente no actualizado'
    			SET @message='<html><body><img src="http://www.amchamcolombia.com.co/imagenes/noticias/ER8.LOGO%20COLTABACO.jpg"></img>
    						<p></p>
    						<p>En el Sistema tenemos un Incidente que no se ha actualizado.</p>
    						<p></p>
    						<p>Del día: '+CAST(@FECHA AS VARCHAR(500))+'</p>
    						<p></p>
    						<p>Correspondiente al Proceso: ' +@pro+
    						'</p>
    						<p></p><p>La persona que lo reporto fue: '+@per+ ' </p><p></p>
    						<p>Por favor verifique con su personal a cargo esta situación.</p></body></html>'
    			
    			EXEC msdb.dbo.sp_send_dbmail					
    			@profile_name = @profilename,
    			@body_format = 'html',				
    			@recipients = @CORREO,
    			@subject = @subject,
    			@body = @message
    			
    			print @Correo					
    			
    		FETCH CURSORFECHA INTO @FECHA,@CIUDAD,@PROCESO
    		END						
    	CLOSE CURSORFECHA
    DEALLOCATE CURSORFECHA
    END

    con el proceso que relaciona una ciudad x cuyos procesos van del 1 al 7 manda el correo perfectamente con el body que es

    pero cuando cambio la ciudad por y manda el correo si pero sin el body

    Alguien sabe como hago para que si me envie el body completo o porque esta sucediendo esta situacion

    lunes, 19 de noviembre de 2012 15:20

Respuestas

  • Es probable que el valor de alguna de tus variables tenga NULL y a la hora de concatenar con el varchar genera como resultado NULL. Tienes varias soluciones para eso, puedes reconfigurar el tratamiento de la concatenacion a nivel de la BD

    SET CONCAT_NULL_YIELDS_NULL OFF

    http://msdn.microsoft.com/es-es/library/ms176056.aspx

    Otra opcion es usar las funciones ISNULL o COALESCE, por ejemplo

    SET @message='<html><body><img src="http://www.amchamcolombia.com.co/imagenes/noticias/ER8.LOGO%20COLTABACO.jpg"></img>
    						<p></p>
    						<p>En el Sistema tenemos un Incidente que no se ha actualizado.</p>
    						<p></p>
    						<p>Del día: '+COALESCE(CAST(@FECHA AS VARCHAR(500)), 'SIN FECHA')+'</p>
    						<p></p>
    						<p>Correspondiente al Proceso: ' + COALESCE(@pro,'SIN PROCESO'+
    						'</p>
    						<p></p><p>La persona que lo reporto fue: '+@per+ ' </p><p></p>
    						<p>Por favor verifique con su personal a cargo esta situación.</p></body></html>'

    • Marcado como respuesta MX001 lunes, 19 de noviembre de 2012 21:13
    lunes, 19 de noviembre de 2012 16:39
  • Si esa era la solucion marca la respuesta para dar por cerrado el hilo. 

    Saludos!

    • Marcado como respuesta MX001 lunes, 19 de noviembre de 2012 21:13
    lunes, 19 de noviembre de 2012 18:26

Todas las respuestas

  • Es probable que el valor de alguna de tus variables tenga NULL y a la hora de concatenar con el varchar genera como resultado NULL. Tienes varias soluciones para eso, puedes reconfigurar el tratamiento de la concatenacion a nivel de la BD

    SET CONCAT_NULL_YIELDS_NULL OFF

    http://msdn.microsoft.com/es-es/library/ms176056.aspx

    Otra opcion es usar las funciones ISNULL o COALESCE, por ejemplo

    SET @message='<html><body><img src="http://www.amchamcolombia.com.co/imagenes/noticias/ER8.LOGO%20COLTABACO.jpg"></img>
    						<p></p>
    						<p>En el Sistema tenemos un Incidente que no se ha actualizado.</p>
    						<p></p>
    						<p>Del día: '+COALESCE(CAST(@FECHA AS VARCHAR(500)), 'SIN FECHA')+'</p>
    						<p></p>
    						<p>Correspondiente al Proceso: ' + COALESCE(@pro,'SIN PROCESO'+
    						'</p>
    						<p></p><p>La persona que lo reporto fue: '+@per+ ' </p><p></p>
    						<p>Por favor verifique con su personal a cargo esta situación.</p></body></html>'

    • Marcado como respuesta MX001 lunes, 19 de noviembre de 2012 21:13
    lunes, 19 de noviembre de 2012 16:39
  • muchisimas gracias.
    lunes, 19 de noviembre de 2012 18:04
  • Si esa era la solucion marca la respuesta para dar por cerrado el hilo. 

    Saludos!

    • Marcado como respuesta MX001 lunes, 19 de noviembre de 2012 21:13
    lunes, 19 de noviembre de 2012 18:26