Oracle郵件傳送
10G之前,如果要從oracle中傳送email,必須藉助oracle的utl_smtp和utl_tcp功能包,自己包裝一個email傳送程式,然後使用。自從10G後,這個流程將變得非常簡單。因為oracle給我們提供了一個utl_mail包,我們可以直接呼叫傳送email。其實這個包底層也是呼叫了utl_smtp、utl_tcp的相關api。 不過utl_mail只能用於無安全驗證的smtp伺服器。如果smtp伺服器需要安全驗證,只能用utl_smtp來實現。
1、確定是否安裝了utl_mail,如果沒有用下面的語句安裝utl_mail
@%ORACLE_HOME%\rdbms\admin\utlmail.sql
@%ORACLE_HOME%\rdbms\admin\prvtmail.plb
2、設定smtp_out_server引數
10g中oracle新增加了這個引數用來定義smtp伺服器。如果該引數沒有設定,oracle會自動解析db_domain 引數,用域名來實現mail的傳送,沒有db_domain也沒有設定,那麼mail將不會成功傳送。建議設定smtp_out_server引數:
alter system set smtp_out_server = 'smtp.chengmail.cn';
如果要同時設定多個smtp伺服器,可以將各個伺服器用逗號隔開:
alter system set smtp_out_server = 'smtp.chengmail.cn, mail.a.com';
上面的域名也可以用ip來代替,oracle預設會使用25埠來傳送,也可以手動指定具體的埠:
alter system set smtp_out_server = 'smtp.chengmail.cn:25, mail.a.com:25';
3、測試郵件傳送
目前utl_mail提供了三個傳送郵件的過程
PROCEDURE SEND
引數名稱 型別 輸入/輸出預設值?
------------------------------ ----------------------- ------ --------
SENDER VARCHAR2 IN
RECIPIENTS VARCHAR2 IN
CC VARCHAR2 IN DEFAULT
BCC VARCHAR2 IN DEFAULT
SUBJECT VARCHAR2 IN DEFAULT
MESSAGE VARCHAR2 IN DEFAULT
MIME_TYPE VARCHAR2 IN DEFAULT
PRIORITY BINARY_INTEGER IN DEFAULT
REPLYTO VARCHAR2 IN DEFAULT
PROCEDURE SEND_ATTACH_RAW
引數名稱 型別 輸入/輸出預設值?
------------------------------ ----------------------- ------ --------
SENDER VARCHAR2 IN
RECIPIENTS VARCHAR2 IN
CC VARCHAR2 IN DEFAULT
BCC VARCHAR2 IN DEFAULT
SUBJECT VARCHAR2 IN DEFAULT
MESSAGE VARCHAR2 IN DEFAULT
MIME_TYPE VARCHAR2 IN DEFAULT
PRIORITY BINARY_INTEGER IN DEFAULT
ATTACHMENT RAW IN
ATT_INLINE BOOLEAN IN DEFAULT
ATT_MIME_TYPE VARCHAR2 IN DEFAULT
ATT_FILENAME VARCHAR2 IN DEFAULT
REPLYTO VARCHAR2 IN DEFAULT
PROCEDURE SEND_ATTACH_VARCHAR2
引數名稱 型別 輸入/輸出預設值?
------------------------------ ----------------------- ------ --------
SENDER VARCHAR2 IN
RECIPIENTS VARCHAR2 IN
CC VARCHAR2 IN DEFAULT
BCC VARCHAR2 IN DEFAULT
SUBJECT VARCHAR2 IN DEFAULT
MESSAGE VARCHAR2 IN DEFAULT
MIME_TYPE VARCHAR2 IN DEFAULT
PRIORITY BINARY_INTEGER IN DEFAULT
ATTACHMENT VARCHAR2 IN
ATT_INLINE BOOLEAN IN DEFAULT
ATT_MIME_TYPE VARCHAR2 IN DEFAULT
ATT_FILENAME VARCHAR2 IN DEFAULT
REPLYTO VARCHAR2 IN DEFAULT
建立存放附件的目錄:
create directory export as '/oracle/product/dump_dir';
grant read, write on directory export to public;
沒有附件的郵件傳送示例:
begin
utl_mail.send(sender => 'oracle@scmdbserver',
recipients => 'ypma@ique.com',
subject => 'oracle email test',
cc => 'gsun@ique.com, pzhang@ique.com',
message => 'sender ok?');
end;
/
帶附件的郵件傳送(基於文字的附件),如要要傳送二進位制附件,可以使用utl_mail.send_attach_raw過程:
DECLARE
fHandle utl_file.file_type;
vTextOut varchar2(32000);
text varchar2(32000);
BEGIN
fHandle := UTL_FILE.FOPEN('EXPORT', 'a.log', 'r');
IF UTL_FILE.IS_OPEN(fHandle) THEN
DBMS_OUTPUT.PUT_LINE('File read open');
ELSE
DBMS_OUTPUT.PUT_LINE('File read not open');
END IF;
LOOP
begin
UTL_FILE.GET_LINE(fHandle, vTextOut);
text := text||vTextOut;
EXCEPTION
WHEN NO_DATA_FOUND THEN EXIT;
end;
END LOOP;
UTL_FILE.FCLOSE(fHandle);
utl_mail.send_attach_varchar2(sender => 'oracle@scmdbserver',
recipients => 'ypma@ique.com',
subject => 'oracle email test',
cc => 'gsun@ique.com, pzhang@ique.com',
message => 'sender ok?',
attachment => text,
att_filename => 'a.log');
END;
/
oracle在send_attach_varchar2中附件內容用varchar2來儲存,也就是說附件不能大於32k。send_attach_raw不能傳送超過2000位元組的附件。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2148502/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用oracle傳送電子郵件Oracle
- oracle 傳送郵件 實現方法Oracle
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- 利用Oracle資料庫傳送郵件Oracle資料庫
- 郵件傳送
- 傳送郵件
- 使用oracle job定時傳送email郵件OracleAI
- java郵件傳送Java
- python傳送郵件Python
- Django——郵件傳送Django
- gmail傳送郵件AI
- phpcms傳送郵件PHP
- 郵件的傳送
- Laravel 傳送郵件Laravel
- thinkjs 傳送郵件JS
- SpringBoot傳送郵件Spring Boot
- SpringBoot郵件傳送Spring Boot
- Laravel傳送郵件Laravel
- PHP傳送郵件PHP
- nodejs 傳送郵件NodeJS
- 功能較全的oracle傳送郵件過程Oracle
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- golang傳送郵件(qq郵箱)Golang
- Android 快速傳送郵件Android
- 使用phpmailer傳送郵件PHPAI
- SpringBoot傳送郵件(二)Spring Boot
- SpringBoot傳送郵件(三)Spring Boot
- 定時傳送郵件
- 使用 smtplib 傳送郵件
- Python SMTP傳送郵件Python
- 郵件傳送API整理API
- php windows 傳送郵件PHPWindows
- SpringBoot整合郵件傳送Spring Boot
- Ubuntu的郵件傳送Ubuntu
- 如何傳送電子郵件到別人郵箱?電子郵件傳送的方法
- node 定時傳送郵件
- Laravel 佇列傳送郵件Laravel佇列
- Spring Boot整合郵件傳送Spring Boot
- python實現傳送郵件Python