Oracle PL/SQLパッケージから直接HTMLメールを送信する必要があります。これはほとんど問題なく動作します。
テーブルからフェッチされたデータの一部に_<S>
_、_<L>
_、および同様のフラグメントが含まれることがあり、HTMLタグとして扱われることがあり、そうでない場合でも常に無視されて表示されません。
したがって、メールの本文に挿入する前に、この列をエスケープする必要があります。
Htmlの特殊文字をエンティティに自動的にエスケープする関数はありますか?または、すべての特殊文字を手動でreplace('<', '<', string)
する必要がありますか?
Htf.escape_sc関数を使用できます。
SQL> select htf.escape_sc('Please escape <this> tag') from dual;
HTF.ESCAPE_SC('PLEASEESCAPE<THIS>TAG')
------------------------------------------------------------------
Please escape <this> tag
Clobを処理できるDBMS_XMLGEN.CONVERTも使用できます。
例:
select DBMS_XMLGEN.CONVERT('<foo>') from dual
詳細: https://docs.Oracle.com/cd/B19306_01/appdev.102/b14258/d_xmlgen.htm
HTF.BDY :
/* SPECIAL FUNCTIONS */
function escape_sc(ctext in varchar2 character set any_cs)
return varchar2 character set ctext%charset is
begin return(replace(
replace(
replace(
replace(ctext, '&', '&' || 'amp;'),
'"', '&' || 'quot;'),
'<', '&' || 'lt;'),
'>', '&' || 'gt;'));
end;
この関数は自分で作成できます
しかし、関数dbms_xmlgen.convertのこのバリアントを使用する方が良い
SQL> select dbms_xmlgen.convert('<test>&''"</test>') from dual
2 /
DBMS_XMLGEN.CONVERT('<TEST>&''"</TEST>')
--------------------------------------------------------------------------------
<test>&'"</test>