在 oracle apex 中通过电子邮件发送报告

时间:2020-12-26 04:19:27

标签: email report oracle-apex

我希望将报告或表格作为电子邮件中的附件发送,在 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 命令时它对我不起作用,当我在动态操作中附加时它显示为错误。

1 个答案:

答案 0 :(得分:0)

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

不是对您问题的回答,而是作为替代:

您可以手动创建 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 附件的电子邮件。