如何创建到 运行 到 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;
我目前正在使用 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;