0

我有一个使用 utl_smtp 发送邮件的程序。我可以发送的最大邮件正文大小是多少,如果我的邮件正文大小超过此限制,我该如何发送?

4

2 回答 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 回答