【问题标题】:Send Report in Email in oracle apex在 oracle apex 中通过电子邮件发送报告
【发布时间】:2020-12-26 04:19:27
【问题描述】:

我希望将报告或表格作为电子邮件中的附件发送,在 oracle apex 中我尝试过显示此错误

ORA-20001: The printing engine could not be reached because either the URL specified is incorrect or a proxy URL needs to be specified. for Execute PL/SQL Code.

这里是代码

DECLARE
    l_id number;
    l_document BLOB;
BEGIN
    l_document := apex_util.get_print_document (
        p_application_id      => 127,
        p_report_query_name   => 'CatpbReport',
        p_report_layout_name  => 'CatpbReport',
        p_report_layout_type  => 'XSL-FO',
        p_document_format     => 'pdf'  );
 
   l_id := APEX_MAIL.SEND(
       p_to        => 'xxxxxxxxxxx',
       p_from      => 'xxxxxxxxxxxx',
       p_subj      => 'sending PDF by using print API',
       p_body      => 'Please review the attachment.',
       p_body_html => 'Please review the attachment');
 
   APEX_MAIL.ADD_ATTACHMENT (
       p_mail_id    => l_id,
       p_attachment => l_document,
       p_filename   => 'mydocument.pdf',
       p_mime_type  => 'application/pdf'
   );
END;

我不知道为什么当我尝试使用它发送电子邮件的 SQL 命令时它对我不起作用,当我在动态操作中附加时它显示为错误。

【问题讨论】:

    标签: email report oracle-apex


    【解决方案1】:

    你不需要打印服务器来使用它吗?

    不是您问题的答案,而是作为替代方案:

    您可以手动创建 html、doc、csv,将其转换为 blob 并将其作为附件添加到您的电子邮件中。

    创建吊球,

    dbms_lob.createtemporary(lob_loc => l_body_blob, cache => true, dur =>dbms_lob.call);
    

    然后将你的 clob 转换为 blob

    dbms_lob.converttoblob (
        dest_lob    => l_body_blob,
        src_clob    => l_body_clob,
        amount      => dbms_lob.lobmaxsize,
        dest_offset => l_dest_offset,
        src_offset  => l_source_offset,
        blob_csid   => dbms_lob.default_csid,
        lang_context=> l_lang_context,
        warning     => l_warning); 
    

    然后将其添加到您的邮件中并发送

    l_mail_id := 
        apex_mail.send (
            p_to           => 'foo@bar.nl',
            p_from         => 'goo@bar.nl',                 
            p_body         => l_body,
            p_body_html    => l_body,
            p_subj         => l_subject);
    
    apex_mail.add_attachment(l_mail_id, l_body_blob, 'test.doc', 'application/msword');
    

    可选:

    apex_mail.push_queue;
    

    这样您应该会收到一封带有 DOC 附件的电子邮件。

    【讨论】:

      猜你喜欢
      • 2018-07-01
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      相关资源
      最近更新 更多