如何在Oracle存储过程中修改HTML实现邮件内容换行
解决Oracle存储过程邮件正文换行问题
要让邮件正文按期望格式换行,核心是在拼接正文内容时插入换行控制符,并确保邮件客户端能识别这些控制符,具体操作如下:
1. 插入换行控制符
Oracle中常用的换行符有两种:
CHR(10):仅换行(适配多数邮件客户端)CHR(13)||CHR(10):回车+换行(兼容Windows系统客户端)
假设你原本是直接拼接字符串生成正文,修改代码时在每个字段行末尾添加换行符:
-- 原拼接代码(无换行) -- v_body := 'Case id: ' || v_case_ids || ' Case name: ' || v_case_names || ' Case Category: ' || v_case_categories; -- 修改后(添加换行) v_body := 'Case id: ' || v_case_ids || CHR(13)||CHR(10) || 'Case name: ' || v_case_names || CHR(13)||CHR(10) || 'Case Category: ' || v_case_categories;
如果是通过游标循环生成多条记录,每次循环拼接后也需添加换行:
DECLARE v_body VARCHAR2(4000); CURSOR cur_cases IS SELECT case_id, case_name, case_category FROM your_case_table; BEGIN v_body := ''; FOR rec IN cur_cases LOOP v_body := v_body || 'Case id: ' || rec.case_id || CHR(13)||CHR(10) || 'Case name: ' || rec.case_name || CHR(13)||CHR(10) || 'Case Category: ' || rec.case_category || CHR(13)||CHR(10)||CHR(10); -- 额外空行分隔不同记录 END LOOP; -- 后续发送邮件逻辑 END; /
2. 确保邮件内容类型正确
使用UTL_MAIL发送邮件时,需指定content_type为text/plain,否则邮件客户端可能会把换行符解析为空格:
UTL_MAIL.SEND( sender => 'your_email@domain.com', recipients => 'target_email@domain.com', subject => 'Case Summary', message => v_body, content_type => 'text/plain; charset=utf-8' -- 关键配置 );
测试调整
如果使用CHR(13)||CHR(10)后仍不生效,可尝试单独使用CHR(10),部分轻量邮件客户端仅识别单一换行符。
内容的提问来源于stack exchange,提问作者Kris
相关产品推荐
相关产品推荐

