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 utl_stmp 包實現 mail傳送功能OracleAI
- 增加欄位的通用程式碼驗證功能
- JWT驗證使用者資訊功能JWT
- spring email 傳送功能SpringAI
- 功能較全的oracle傳送郵件過程Oracle
- thinkphp 增加七牛上傳功能PHP
- 使用者註冊E-mail驗證AI
- django send_mail功能DjangoAI
- Django實現傳送郵件功能Django
- 使用 Laravel Passport 為你的 REST API 增加使用者認證功能LaravelPassportRESTAPI
- 利用msmtp+mutt 傳送mailAI
- VuePress 中增加使用者登入功能Vue
- 【Python】傳送郵件功能淺析Python
- 配置mail使用SMTP傳送郵件AI
- 基於Spring Boot傳送 mailSpring BootAI
- java 傳送郵件Commons MailJavaAI
- day80:luffy:簡訊sdk接入&點選獲取驗證碼&註冊功能的實現&Celery實現簡訊傳送功能
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- KDE Connect增加了安卓檔案傳送、觸控板模擬等功能安卓
- laravel 郵件傳送功能使用說明Laravel
- 傳送郵件的小功能(.net core 版)
- 教程-Python例項-傳送郵件功能Python
- [Developer] Procedure傳送html形式表格的mailDeveloperHTMLAI
- 影片直播app原始碼,傳送驗證碼 驗證碼識別APP原始碼
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- day101:MoFang:模型構造器ModelSchema&註冊功能之手機號唯一驗證/儲存使用者註冊資訊/傳送簡訊驗證碼模型
- Jbpm3.2 傳送郵件需要修改org.jbpm.mail.Mail類AI
- 利用spring-mail 寫的超級smart-mail傳送器SpringAI
- Python 實現郵件傳送功能(進階)Python
- Python 實現郵件傳送功能(初級)Python
- Android註冊功能--電話驗證和郵箱驗證Android
- Java Mail 郵件傳送(一):入門DemoJavaAI
- 利用System.Web.Mail傳送EMail程式碼WebAI
- crontab執行結果未透過傳送mail通知使用者的方法AI
- 利用jQuery實現表單驗證功能jQuery
- Java實現郵箱驗證碼功能Java
- zabbix郵件報警功能的驗證
- NT域驗證功能VB典型程式碼