컨텍스트 : 오라클 절차 (텍스트/일반 텍스트가 아닌 html/텍스트 만)로 메일을 보내려고합니다. Oracle 9i을 사용합니다.Oracle9i는 특정 문자가 포함 된 HTML 전자 메일을 보냅니다.
문제점 : html 메시지에 & 같은 일부 문자가 포함 된 경우; (é), 무시합니다. ;. 그러나 직접 ely을 html 메시지에 쓰면 e이 더 좋습니다.
예 :
메시지 보내기 :
l_html := '<html>
<head><title>Test HTML message</title></head>
<p>trying à with accent : à</p>
<p>trying HTML encoding of foreign language characters : à
</body>
</html>';
메시지가 나타날
trying a with accent : a
trying HTML encoding of foreign language characters : ;
이 가능 같은 후 "a"또는 "A로 모두 변환인가 "Oracle 9i를 사용하고 있습니까?
내가 사용하는 일부 코드 :
l_boundary CONSTANT VARCHAR2(255) DEFAULT 'a1b2c3d4e3f2g1';
l_temp := l_temp || 'MIME-Version: 1.0' || carriageReturn;
l_temp := l_temp || 'To: ' || p_to || carriageReturn;
l_temp := l_temp || 'Cc: ' || p_cc || carriageReturn;
l_temp := l_temp || 'From: ' || p_from || carriageReturn;
l_temp := l_temp || 'Subject: ' || p_subject || carriageReturn;
l_temp := l_temp || 'Reply-To: ' || p_from || carriageReturn;
l_temp := l_temp || 'Content-Type: multipart/alternative; boundary=' || CHR(34) || l_boundary || CHR(34) || carriageReturn;
-- Write the HTML boundary
l_temp := carriageReturn || carriageReturn || '--' || l_boundary || carriageReturn;
l_temp := l_temp || 'content-type: text/html; charset=windows-1252' || carriageReturn || carriageReturn;
l_offset := dbms_lob.getlength(l_body_html) + 1;
dbms_lob.WRITE(l_body_html, LENGTH(l_temp), l_offset, l_temp);
누군가가 제발 도와 드릴까요?
빠른 답장을 보내 주셔서 감사합니다. 사실 우리 데이터베이스의 문자 집합은 windows-1252가 아니며 WE8ISO8859P1입니다. 그건 그렇고, 내가 UTL_I18N와 쿼리를 사용할 수 없습니다, 나는 실행 오류 ** ORA - 00904 : "UTL_I18N". "MAP_CHARSET": identideur 비 valide **. Thie 마이그레이션은 보류 중입니다.하지만 마이그레이션을 완료하기 전에 해결책을 찾아야합니다. ^^ – nbadaud
그리고 ** charset = WE8ISO8859P1 **을 사용하면 예제 이메일에서 ** $ eacute; ** 대신 * $ eacute; **를 전송합니다. *; **. 내 문제를 해결하지 않습니다 :/ – nbadaud
'charset = ISO-8859-1'이어야합니다. 'WE8ISO8859P1'은 오라클 문자 집합 이름이고 IANA 이름을 사용해야합니다. –