如何创建到 运行 到 table 的过程并在 Oracle Apex 中发送电子邮件?

How to create a procedure to run through table and send an email in Oracle Apex?

我目前正在使用 Oracle Apex 4.2,我需要一种方法让程序 运行 通过 table 并发送电子邮件(如果尚未发送)。执行此操作的最佳方法是什么?

听起来您只是想要这样的东西(我在猜测您的 table 定义、您的列的名称等)

FOR m IN (SELECT *
            FROM email_table
           WHERE sent_yet = 'N')
LOOP
  apex_mail.send( p_to => m.to,
                  p_from => <<your email address>>,
                  p_body => m.text_of_email,
                  p_subj => m.subject );
  UPDATE email_table
     SET sent_yet = 'N'
   WHERE primary_key = m.primary_key;
END LOOP;

apex_mail.send procedure documentation 显示了您可以传入的更多选项。请注意,如果您尚未在此环境中使用 apex_mail 发送电子邮件,您可能想要一个单独的作业,它实际上发送排队的电子邮件。例如,这将提交一个每分钟发送排队电子邮件的作业。

DECLARE
  l_jobno pls_integer;
BEGIN
  dbms_job.submit( l_jobno,
                   'begin apex_mail.push_queue( <<smtp server>>, <<port>> ); end;',
                   sysdate + interval '1' minute,
                   q'{sysdate + interval '1' minute}' );
  commit;
END;

我知道问题出在哪里了。我需要一行代码来允许 apex 通过我的应用程序发送电子邮件。

BEGIN
wwv_flow_api.set_security_group_id; 

for rst in (
    select aud.LAN_ID, aud.ID, sent.TEMPLATE_TEXT, temp.TEMPLATE_NAME from EMAIL_Audit aud
    INNER JOIN EAMAIL_SENT sent
    ON aud.TEMP_TEXT_ID = sent.id
    INNER JOIN EMAIL_TEMP temp
    ON sent.PROCESS_ID = temp.id
    WHERE SENT_IND is null
    )
loop

APEX_MAIL.SEND( 
    p_to => 'someEmail@email.com',
    p_from => 'otherEmail@email.com',
    p_body => rst.TEMPLATE_TEXT,
    p_subj => rst.TEMPLATE_NAME );

END loop;

    APEX_MAIL.PUSH_QUEUE; 

END;​