我的Oracle資料庫目前無法處理與Office 365進行郵件通信所需的TLS 1.2。因此,我正在使用一個舊的郵件服務器來發送我的郵件,因為它不需要驗證,并且位于前提下。對于內部通信,我需要改變所有的 "到 "地址以改變域,這樣郵件就會被發送到微軟,而不是回傳到內部郵件服務器。
舉例來說。我需要將所有電子郵件從[email protected]改為[email protected]。我是否有辦法改變Oracle中的APEX_MAIL包,使任何在 "TO "欄位中使用的domain.com自動變為domain.onmicrosoft.com?
uj5u.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 NULLIS[/span].
l_mail_to VARCHAR2(4000) := NULL。
l_mail_cc VARCHAR2(4000) := NULL;
l_mail_bcc VARCHAR2(4000) := Null;
BEGIN[/span
l_mail_to := REPLACE (LOWER(mail_to_i),'@domain.com','@domain.onmicrosoft.com') 。
--如果需要,做其他的替換。
頂峰_郵件.發送
(
p_to => l_mail_to,
p_from => mail_from_i。
p_cc => mail_cc_i,
p_subj =>/span> mail_subject_i,
p_body => mail_body_i,
p_body_html => mail_body_html_i。
p_replyto =>/span> mail_reply_to_i,
p_bcc => mail_bcc_i
);
END發送。
uj5u.com熱心網友回復:
你不能也不應該修改APEX_MAIL包。你應該修改呼叫APEX_MAIL包的程序,以便在必要時進行任何替換,或者只是驗證電子郵件地址的輸入,以便它們是你期望的。
如果您有已經被添加到apex_mail_queue的電子郵件,并且出現了錯誤,您可以更新apex_190200.wwv_flow_mail_queue(或任何適合您環境的APEX模式),以糾正MAIL_TO列中的地址。你還需要重置mail_send_count和mail_send_error,以便在下次嘗試發送郵件時進行處理。
UPDATE apex_190200.wwv_flow_mail_queue
SET mail_to = '[email protected]'/span>。mail_send_count = 0, mail_send_error = NULL。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/324983.html
標籤:
上一篇:在bash中停止一個背景回圈
下一篇:如何計算特定表的磁區?
