PL/SQL使用HTMLDB_MAIL发邮件时如何将变量内容设为加粗
实现邮件子标题加粗的PL/SQL调整方案
先修复原代码的基础语法问题
from table处使用了Oracle保留字table作为表名,会触发语法报错,需替换为实际业务表名p_body参数行末尾误写了分号,打断了HTMLDB_MAIL.SEND的参数列表,需替换为逗号分隔后续参数- 纯文本格式的邮件不支持排版格式,无法实现var_sub_title的加粗效果,需要基于HTML格式的邮件能力实现需求
核心实现逻辑
- 用HTML加粗标签
<b>包裹var_sub_title变量内容,实现加粗效果 - 将原代码中用于换行的
CHR(10)||CHR(13)替换为HTML通用换行标签<br>,保证HTML模式下排版正常 - 给邮件发送方法传入HTML格式的内容参数,指定正确的内容类型,让邮件客户端能正常解析格式
改造后可直接使用的代码
declare var_sub_title varchar2(60); var_txt varchar2(500); var_msg_sub varchar2(60); var_html_body varchar2(2000); begin select sub_title, txt, subject into var_sub_title, var_txt, var_msg_sub from 实际业务表名 -- 替换为原查询使用的正式表名 where msg_id = :id; -- 拼接带加粗格式的邮件正文 var_html_body := '<b>' || var_sub_title || '</b>' || '<br><br>' || var_txt; -- 发送HTML格式邮件 HTMLDB_MAIL.SEND( p_to => 'email@mail.com', p_from => 'email@email.net', p_body => var_html_body, p_subj => var_msg_sub, p_body_html => var_html_body, p_mimetype => 'text/html; charset=utf-8' ); htmldb_mail.push_queue; end;
注意事项
- 如果使用的早期版本
HTMLDB_MAIL没有p_body_html、p_mimetype参数,可直接在p_body中拼接HTML标签,同时调用时指定邮件内容类型为HTML,防止加粗标签被当成普通文本展示 - 纯文本邮件协议本身不支持加粗这类格式控制,不要尝试在纯文本流中强行实现加粗,否则会在不同邮件客户端出现显示混乱的问题
内容的提问来源于stack exchange,提问作者lui862
相关产品推荐
相关产品推荐

