ORACLE mail傳送功能,增加使用者驗證功能
曾經寫過一個利用oracle smtp包發mail的procedure,但當時沒有增加使用者的密碼驗證功能,這次正好公司的smtp伺服器取消的匿名郵件傳送,就此機會,完善了該procedure。
CREATE OR REPLACE PROCEDURE send_mail(
p_sender In Varchar2 default 'xxx@xxx.com.cn',
p_receiver IN Varchar2 default 'xxx@xxx.com.cn',
p_message IN Varchar2 Default 'ceshi')
AS
mailhost VARCHAR2(100) := '10.x.x.x; --smtp mail 伺服器
mail_conn utl_smtp.connection;
p_user Varchar2(30) :='systemuser@xxx.com.cn';--定義驗證的mail帳號
p_pass Varchar2(20) :='sysuser';--定義改帳號的密碼
PROCEDURE send_header(conn IN OUT NOCOPY utl_smtp.connection,
name IN VARCHAR2,
value IN VARCHAR2)
As
BEGIN
utl_smtp.write_data(conn,name || ': =?GB2312?B?' || --注意使用GB2312才能支援中文
utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(value))) || '?='|| utl_tcp.crlf);
END;
BEGIN
mail_conn :=utl_smtp.open_connection(mailhost,25);
--utl_smtp.helo(mail_conn,mailhost); --註釋掉此語句
UTL_SMTP.COMMAND(mail_conn, 'AUTH LOGIN'); --用AUTH LOGIN選項啟用安全登入功能
utl_smtp.command(mail_conn, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(p_user))));
utl_smtp.command(mail_conn, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(p_pass))));
utl_smtp.mail(mail_conn,p_sender); -- sender
utl_smtp.rcpt(mail_conn,p_receiver); -- receiver
utl_smtp.open_data(mail_conn);
send_header(mail_conn,'From',p_sender);--顯示 mail中的發件人
send_header(mail_conn,'To', p_receiver); --顯示mail中的 收件人
--send_header(mail_conn,'Cc', 'xxx@xxx.com.cn');--顯示抄送人地址
--send_header(mail_conn,'Bcc', 'xxx@xxx.com.cn');--顯示祕送人地址
send_header(mail_conn,'Subject', 'ETL 報錯 郵件'); --郵件主題
UTL_SMTP.write_data(mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || Chr(13)|| chr(10));
utl_smtp.write_data(mail_conn, 'MIME-Version: 1.0' || chr(13) || chr(10));
utl_smtp.write_data(mail_conn, 'Content-type: text/plain;Charset=UTF8;' || chr(13) || chr(10));
utl_smtp.write_data(mail_conn, 'Content-Transfer-Encoding: base64' || chr(13) || chr(10));
utl_smtp.write_data(mail_conn, chr(13) || chr(10));
utl_smtp.write_data(mail_conn, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(p_message))));
utl_smtp.close_data(mail_conn);
utl_smtp.quit(mail_conn);
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
utl_smtp.quit(mail_conn);
raise_application_error(-20000,
'Failed tosend mail due to the following error: ' || sqlerrm);
WHEN OTHERS THEN
raise_application_error(-20001,
'The following error has occured: ' || sqlerrm);
End send_mail;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10159839/viewspace-369046/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 功能較全的oracle傳送郵件過程Oracle
- spring email 傳送功能SpringAI
- JWT驗證使用者資訊功能JWT
- Gson 增加額外校驗功能
- thinkphp 增加七牛上傳功能PHP
- 基於Spring Boot傳送 mailSpring BootAI
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- 配置mail使用SMTP傳送郵件AI
- 使用 Laravel Passport 為你的 REST API 增加使用者認證功能LaravelPassportRESTAPI
- VuePress 中增加使用者登入功能Vue
- day101:MoFang:模型構造器ModelSchema&註冊功能之手機號唯一驗證/儲存使用者註冊資訊/傳送簡訊驗證碼模型
- day80:luffy:簡訊sdk接入&點選獲取驗證碼&註冊功能的實現&Celery實現簡訊傳送功能
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- crontab執行結果未透過傳送mail通知使用者的方法AI
- Java Mail 郵件傳送(一):入門DemoJavaAI
- springboot新增郵件傳送及壓縮功能Spring Boot
- Python 實現郵件傳送功能(進階)Python
- laravel 郵件傳送功能使用說明Laravel
- Python 實現郵件傳送功能(初級)Python
- 影片直播app原始碼,傳送驗證碼 驗證碼識別APP原始碼
- python傳送手機動態驗證碼Python
- soket 利用http實現驗證碼的傳送HTTP
- [Python]實現簡訊驗證碼的傳送Python
- Gitlab伺服器郵箱配置,實現自動為使用者傳送郵件(註冊傳送驗證連結)Gitlab伺服器
- Java實現郵箱驗證碼功能Java
- 利用jQuery實現表單驗證功能jQuery
- SOLIDWORKS 2023新增功能 - SIMULATION模擬驗證Solid
- oracle send mailOracleAI
- System.Net郵件傳送功能踩過的坑
- Python 壓縮資料夾併傳送郵件功能Python
- Laravel 專案實現郵箱驗證功能Laravel
- SpringSceurity(5)---簡訊驗證碼登陸功能Spring
- SpringSceurity(4)---簡訊驗證碼功能實現Spring
- 切換功能增加刪除
- 微信小程式 傳送模板訊息的功能實現微信小程式
- 【Oracle】Oracle logminer功能介紹Oracle
- ZBlog關閉驗證碼功能(出現驗證碼出錯請關閉)
- Spring Boot 參考指南(驗證&傳送電子郵件)Spring Boot
- Jave Web阿里雲簡訊服務傳送驗證碼Web阿里