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