首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改APEX_MAIL包

更改APEX_MAIL包
EN

Stack Overflow用户
提问于 2021-09-20 18:34:04
回答 2查看 158关注 0票数 0

我的Oracle数据库目前无法处理邮件与Office 365通信所需的TLS 1.2。因此,我使用一个旧的邮件服务器发送我的邮件,因为它不需要认证,并位于前提。对于内部通信,我需要更改所有" to“地址以更改域,以便将邮件发送到Microsoft,而不是返回到内部邮件服务器。

例句:我需要把所有的电子邮件从user@domain.com改为user@domain.onmicrosoft.com。我是否可以在oracle中修改APEX_MAIL包,以便" to“字段中的domain.com的任何使用都会自动更改为domain.onmicrosoft.com

EN

回答 2

Stack Overflow用户

发布于 2021-09-21 05:52:58

通常情况下,您不会更改专有包--即使可以,它也是错误的。相反,您可以围绕apex_mail包装您自己的pl/sql过程。创建一个具有与您正在使用的apex_mail过程相同签名的包,并在这些过程中调用apex_mail。在打电话给apex_mail之前,做任何你需要的魔术(在你的情况下更改电子邮件附件)。唯一的缺点是您不能在“发送电子邮件”类型的进程中使用它--您必须使用pl/sql。下面是一个过程的示例:

代码语言:javascript
运行
复制
  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;
票数 1
EN

Stack Overflow用户

发布于 2021-09-20 19:12:42

您不能也不应该修改APEX_MAIL包。您应该修改调用APEX_MAIL包的过程,以便在必要时执行任何替换操作,或者只是验证电子邮件地址的输入,这样它们才是您所期望的。

如果您的电子邮件已经添加到apex_mail_queue中并已错误,则可以更新apex_190200.wwv_flow_mail_queue (或为您的环境使用适当的APEX模式)以更正MAIL_TO列中的地址。您还需要重置mail_send_countmail_send_error,以便在下次尝试发送电子邮件时对其进行处理。

代码语言:javascript
运行
复制
UPDATE apex_190200.wwv_flow_mail_queue
   SET mail_to = 'some.email@domain.onmicrosoft.com', mail_send_count = 0, mail_send_error = NULL;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69259317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档