【问题标题】:mail body size limit in utl_smtputl_smtp 中的邮件正文大小限制
【发布时间】:2011-12-07 11:20:25
【问题描述】:

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

【问题讨论】:

    标签: oracle plsql oracle10g plsqldeveloper


    【解决方案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;
    

    【讨论】:

      【解决方案2】:

      来自Oracle Documentation

      规则和限制 API 没有限制或范围检查。但是,您应该注意以下尺寸 对 SMTP 的各种元素的限制。发送超过 这些限制可能会导致服务器返回错误。

      表 178-5 SMTP 大小限制

      元素 |尺寸限制

      用户 |用户名的最大总长度为 64 个字符。

      域名 |域名或号码的最大总长度为 64 字符。

      路径 |反向路径或正向路径的最大总长度为 256 个字符(包括标点符号和元素分隔符)。

      命令行 |命令行的最大总长度,包括 命令字是 512 个字符。

      回复行 |回复行的最大总长度,包括 回复代码,是 512 个字符。

      文本行 |文本行的最大总长度,包括 是 1000 个字符(但不包括重复的前导点 透明度)。

      收件人缓冲区 |必须接收的最大收件人总数 被缓冲的是 100 个收件人。

      无论如何,我认为如果你的邮件正文太大,目的地会拒绝它...

      更新 无论如何,如果您通过电子邮件发送如此大的数据,那就有问题了。你应该使用另一种解决方案。从数据库读取数据并以友好格式呈现给用户的客户端。 有oracle discoverer,也可以用java,php开发应用……有很多选择……

      【讨论】:

      • 如果包含 的文本行的最大总长度超过 1000 个字符怎么办?我不能使用 UTL_SMTP 发送邮件吗?有没有办法发送邮件,即使正文的长度太大>如果有的话请告诉我
      • 1000 个字符似乎是 smtp 限制。恐怕行不通。试试 UTL_MAIL。我会根据一些注意事项更新我的回复。
      猜你喜欢
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多