Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/09/2010, 08:50
Avatar de Fuzzylog
Fuzzylog
 
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Enviar correo con caracteres raros desde procedimiento almacenado

Con esto te debería funcionar, al menos en oracle:

Cuando defines las variables que vayan a generar el cuerpo de correo hazlo así:

--Necesario para identificar la conexion
tu_conex_mail = UTL_SMTP.connection;

-- Variables para el cuerpo de correo en formato RAW (compondrá un cuerpo de correo de 5000 caracteres)
pBody VARCHAR2(5000);
varData RAW(5000);

Cuando escribas las cabeceras del correo (antes de generar el body):

-- Para permitir caracteres "especiales" (tildes, simbolos, ...)
UTL_smtp.write_data(tu_conex_mail, 'MIME-Version: ' || '1.0' || UTL_TCP.CRLF);
UTL_smtp.write_data(tu_conex_mail, 'Content-Type: ' || 'text/plain; charset=iso-8859-15' || UTL_TCP.CRLF);
UTL_smtp.write_data(tu_conex_mail, 'Content-Transfer-Encoding: ' || '8bit' || UTL_TCP.CRLF);
-- Deja un espacio para separar el cuerpo de la cabecera
UTL_SMTP.write_data(tu_conex_mail, UTL_TCP.CRLF);

Cuando acabes de escribir el body:

-- transforma el pBody en RAW y escribe el cuerpo del correo
varData := utl_raw.cast_to_raw(pBody);
UTL_smtp.write_raw_data(tu_conex_mail, varData);

UTL_SMTP.close_data(tu_conex_mail); -- Se cierra el buffer del correo

UTL_SMTP.quit(tu_conex_mail); -- Se cierra la conexión con el servidor de correo