16/09/2010, 08:50
|
| | | Fecha de Ingreso: agosto-2008 Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 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 |