oracle - 更改 APEX_MAIL 包
问题描述
My Oracle Database 目前无法处理与 Office 365 进行邮件通信所需的 TLS 1.2。所以我使用旧的邮件服务器来发送我的邮件,因为它不需要身份验证并且位于本地。对于内部通信,我需要更改所有“收件人”地址以更改域,以便将邮件发送到 Microsoft 而不是返回到内部邮件服务器。
示例:我需要将所有电子邮件从user@domain.com更改为user@domain.onmicrosoft.com。有没有办法可以更改 Oracle 中的 APEX_MAIL 包,以便在“TO”字段中对domain.com的任何使用都会自动更改为domain.onmicrosoft.com?
解决方案
通常,您不会更改专有软件包 - 即使可以,那也是错误的。相反,您将自己的 pl/sql 过程包装在 apex_mail 周围。创建一个与您正在使用的 apex_mail 过程具有相同签名的包,并在这些过程中调用 apex_mail。在调用 apex_mail 之前,做任何你需要的魔法(根据你的情况更改电子邮件地址)。唯一的缺点是你不能在“发送电子邮件”类型的进程中使用它——你必须使用 pl/sql。下面是一个过程示例:
PROCEDURE send (
mail_to_i IN VARCHAR2,
mail_from_i IN VARCHAR2,
mail_reply_to_i IN VARCHAR2,
mail_body_i IN VARCHAR2,
mail_body_html_i IN VARCHAR2 DEFAULT NULL,
mail_subject_i IN VARCHAR2 DEFAULT NULL,
mail_cc_i IN VARCHAR2 DEFAULT NULL,
mail_bcc_i IN VARCHAR2 DEFAULT NULL
)
IS
l_mail_to VARCHAR2(4000) := NULL;
l_mail_cc VARCHAR2(4000) := NULL;
l_mail_bcc VARCHAR2(4000) := NULL;
BEGIN
l_mail_to := REPLACE (LOWER(mail_to_i),'@domain.com','@domain.onmicrosoft.com');
-- do other substitutions if needed
apex_mail.send
(
p_to => l_mail_to,
p_from => mail_from_i,
p_cc => mail_cc_i,
p_subj => mail_subject_i,
p_body => mail_body_i,
p_body_html => mail_body_html_i,
p_replyto => mail_reply_to_i,
p_bcc => mail_bcc_i
);
END send;
推荐阅读
- sql - SQL Server:过滤行到列
- c# - 你如何在 Xamarin 的 firebase 中 PutAsync()
- list - 构造两个列表的笛卡尔积,每对添加一个随机数
- axapta - 如何在运行时根据配置更改安全权限
- json - 如何使用 JavaScipt 在 Django 中发布多个 Json 字段/对象
- javascript - 如何将响应对象传递给 puppeteer 中的外部回调函数?
- python - 设置 Geopandas 行/列显示
- r - 如何在R中用两个y轴绘制这三列数据?
- python - 为什么pygame中没有显示文本?
- python - AWS CDK Python 中的 IAM 角色条件