我有一个使用 utl_smtp 发送邮件的程序。我可以发送的最大邮件正文大小是多少,如果我的邮件正文大小超过此限制,我该如何发送?
问问题
5398 次
2 回答
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;
于 2011-12-07T13:55:02.387 回答
0
来自Oracle 文档:
规则和限制 API 没有施加限制或范围检查。但是,您应该注意以下对 SMTP 各种元素的大小限制。发送超出这些限制的数据可能会导致服务器返回错误。
表 178-5 SMTP 大小限制
元素 | 尺寸限制
用户 | 用户名的最大总长度为 64 个字符。
域名 | 域名或号码的最大总长度为 64 个字符。
路径 | 反向路径或正向路径的最大总长度为 256 个字符(包括标点符号和元素分隔符)。
命令行 | 包括命令字在内的命令行的最大总长度为 512 个字符。
回复线 | 包括回复代码在内的回复行的最大总长度为 512 个字符。
文本行 | 包括 在内的文本行的最大总长度为 1000 个字符(但不包括为透明度而复制的前导点)。
收件人缓冲区 | 必须缓冲的最大收件人总数为 100 个收件人。
无论如何,我认为如果您的电子邮件正文太大,目的地会拒绝它......
更新 无论如何,如果您通过电子邮件发送如此大的数据,那就有问题了。你应该使用另一种解决方案。从数据库读取数据并以友好格式呈现给用户的客户端。有oracle discoverer,也可以用java,php开发应用……有很多选择……
于 2011-12-07T12:25:44.267 回答