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

Enviar adjunto a correo o escribir fichero desde procedimiento almacenado

Estas en el tema de Enviar adjunto a correo o escribir fichero desde procedimiento almacenado en el foro de SQL Server en Foros del Web. Hola buenas, estoy intentando enviar un correo desde un procedimiento almacenado con JMail. En realidad, el correo se envía correctamente, pero tengo el problema en ...
  #1 (permalink)  
Antiguo 18/10/2006, 05:42
 
Fecha de Ingreso: septiembre-2004
Mensajes: 179
Antigüedad: 19 años, 7 meses
Puntos: 0
Enviar adjunto a correo o escribir fichero desde procedimiento almacenado

Hola buenas,

estoy intentando enviar un correo desde un procedimiento almacenado con JMail. En realidad, el correo se envía correctamente, pero tengo el problema en cómo envíar los datos. Necesito que el contenido obtenido de una consulta a base de datos se envíe como adjunto al correo y no como cuerpo.

El problema es que no puedo (o no sé cómo) pasar la cadena de texto generada como adjunto y no sé cómo guardar esa cadena en un fichero (temporal) de texto y luego adjuntarlo al correo.

Se puede pasar una cadena al adjunto de JMail? o, en su defecto, cómo escribo un fichero de texto desde un procedimiento almacenado?

Cualquier orientación será agradecida :)
__________________
Estoy en www.aibarra.net

Camino para preguntar: manual -> Google -> FAQs y buscador del foro -> Nuevo Tema.
Tan difícil es escribir correctamente? Es más fácil leerlo. Pónselo fácil al que quiera ayudarte.
  #2 (permalink)  
Antiguo 18/10/2006, 12:27
 
Fecha de Ingreso: octubre-2006
Mensajes: 36
Antigüedad: 17 años, 6 meses
Puntos: 0
Para escribir ficheros puedes utilizar una tarea (job) de sql. Puedes usar varios pasos que contengan desde sentencias sql, hasta de linea de comandos y vbscript (en los diferentes pasos puedes utilizar indistintamente cualquiera de ellos), pero tienes que tener mucho cuidado con el usuario que escribe y donde los escribe.

Para ejecutar un job desde un procedimiento almacenado puedes llamar al procedimiento almacenado sp_start_job (aunque también interviene la seguridad en que puedas llamarlo).
  #3 (permalink)  
Antiguo 19/10/2006, 01:21
 
Fecha de Ingreso: septiembre-2004
Mensajes: 179
Antigüedad: 19 años, 7 meses
Puntos: 0
Hola buenas,

lo primero, gracias Greñas por tu solución. Parece algo rebuscada y al final encontré algo más "inmediato". Dejo aquí un código de ejemplo por si alguien se encuentra con esta duda más adelante.

Código:
DECLARE @FS int, @OLEResult int, @FileID int,@FileName varchar(255) 
	
SET @FileName = 'C:\prueba.txt'
EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
IF @OLEResult <> 0 PRINT 'Scripting.FileSystemObject'

--Open a file
execute @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT, @FileName, 2, 1
IF @OLEResult <> 0 PRINT 'OpenTextFile'

--Write Text1
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'Hola'
IF @OLEResult <> 0 PRINT 'WriteLine'

EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS
Decir que el parámetro "2" del OpenTextFile abre el fichero para escribir, borrando antes cualquier contenido del fichero si existiera. Para añadir contenido (append) se usaría un valor de 8. Son necesarios los permisos correspondientes en la carpeta donde se escriba y, para el usuario de SQL Server, para la base de datos master.
__________________
Estoy en www.aibarra.net

Camino para preguntar: manual -> Google -> FAQs y buscador del foro -> Nuevo Tema.
Tan difícil es escribir correctamente? Es más fácil leerlo. Pónselo fácil al que quiera ayudarte.
  #4 (permalink)  
Antiguo 22/10/2006, 02:52
 
Fecha de Ingreso: octubre-2006
Mensajes: 36
Antigüedad: 17 años, 6 meses
Puntos: 0
Pues si, mucho mejor la tuya, para que negarlo

Eso de ejecutar activex desde sql, me lo apunto.
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 00:02.