我有一个使用utl_smtp发送邮件的程序。 我可以发送的最大邮件正文大小是多少,如果我的邮件正文大小超过此限制,那么我该如何发送呢?
答案 0 :(得分:1)
只需将其分块发送:
l_offset := 1;
l_amount := 1900;
utl_smtp.open_data(l_connection);
while l_offset < dbms_lob.getlength(l_body_html) loop
utl_smtp.write_data(l_connection,
dbms_lob.substr(l_body_html,l_amount,l_offset));
l_offset := l_offset + l_amount ;
l_amount := least(1900,dbms_lob.getlength(l_body_html) - l_amount);
end loop;
答案 1 :(得分:0)
规则和限制 API不会施加任何限制或范围检查。但是,您应该了解以下大小 对SMTP的各种元素的限制。发送超过的数据 这些限制可能导致服务器返回错误。
表178-5 SMTP大小限制
元素|尺寸限制
用户|用户名的最大总长度为64个字符。
域名|域名或号码的最大总长度为64 字符。
路径|反向路径或前向路径的最大总长度为 256个字符(包括标点符号和元素分隔符)。
命令行|命令行的最大总长度包括 命令字和512个字符。
回复行|回复行的最大总长度包括 回复代码,是512个字符。
文字行|包含文本行的最大总长度 是1000个字符(但不包括重复的前导点 透明度。)
收件人缓冲区|必须的最大收件人总数 缓冲是100个收件人。
无论如何,我认为如果你的电子邮件正文太大,目的地会拒绝它......
<强>更新强> 无论如何,如果你通过电子邮件发送如此大的数据,那就错了。你应该使用另一种解决方案。从数据库读取数据并以友好格式将其呈现给用户的客户端。 有oracle发现者,或者你可以使用java或php开发一个应用程序...有很多选项......