亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

oracle 發送郵件 實現方法

2024-08-29 13:56:44
字體:
來源:轉載
供稿:網友
CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXTVARCHAR2,
P_SUBVARCHAR2,
P_SENDORVARCHAR2,
P_RECEIVER VARCHAR2,
P_SERVERVARCHAR2,
P_PORTNUMBER DEFAULT 25,
P_NEED_SMTP INT DEFAULT 0,
P_USERVARCHAR2 DEFAULT NULL,
P_PASSVARCHAR2 DEFAULT NULL,
P_FILENAME VARCHAR2 DEFAULT NULL,
P_ENCODEVARCHAR2 DEFAULT 'bit 7')
AUTHID CURRENT_USER IS
/*
作用:用oracle發送郵件
主要功能:1、支持多收件人。
2、支持中文
3、支持抄送人
4、支持大于32K的附件
5、支持多行正文
6、支持多附件
7、支持文本附件和二進制附件
8、支持HTML格式
8、支持
作者:suk
參數說明:
p_txt :郵件正文
p_sub: 郵件標題
p_SendorAddress : 發送人郵件地址
p_ReceiverAddress : 接收地址,可以同時發送到多個地址上,地址之間用","或者";"隔開
p_EmailServer : 郵件服務器地址,可以是域名或者IP
p_Port :郵件服務器端口
p_need_smtp:是否需要smtp認證,0表示不需要,1表示需要
p_user:smtp驗證需要的用戶名
p_pass:smtp驗證需要的密碼
p_filename:附件名稱,必須包含完整的路徑,如"d:tempa.txt"。
可以有多個附件,附件名稱只見用逗號或者分號分隔
p_encode:附件編碼轉換格式,其中 p_encode='bit 7' 表示文本類型附件
p_encode='base64' 表示二進制類型附件
注意:
1、對于文本類型的附件,不能用base64的方式發送,否則出錯
2、對于多個附件只能用同一種格式發送
*/
L_CRLF VARCHAR2(2) := UTL_TCP.CRLF;
L_SENDORADDRESS VARCHAR2(4000);
L_SPLITEVARCHAR2(10) := '++';
BOUNDARYCONSTANT VARCHAR2(256) := '-----BYSUK';
FIRST_BOUNDARYCONSTANT VARCHAR2(256) := '--' || BOUNDARY || L_CRLF;
LAST_BOUNDARYCONSTANT VARCHAR2(256) := '--' || BOUNDARY || '--' ||
L_CRLF;
MULTIPART_MIME_TYPE CONSTANT VARCHAR2(256) := 'multipart/mixed; boundary="' ||
BOUNDARY || '"';
/* 以下部分是發送大二進制附件時用到的變量 */
L_FILBFILE;
L_FILE_LENNUMBER;
L_MODULONUMBER;
L_PIECESNUMBER;
L_FILE_HANDLEUTL_FILE.FILE_TYPE;
L_AMTBINARY_INTEGER := 672 * 3; /* ensures proper format; 2016 */
L_FILEPOSPLS_INTEGER := 1; /* pointer for the file */
L_CHUNKSNUMBER;
L_BUFRAW(2100);
L_DATARAW(2100);
L_MAX_LINE_WIDTHNUMBER := 54;
L_DIRECTORY_BASE_NAME VARCHAR2(100) := 'DIR_FOR_SEND_MAIL';
L_LINEVARCHAR2(1000);
L_MESGVARCHAR2(32767);
/* 以上部分是發送大二進制附件時用到的變量 */
TYPE ADDRESS_LIST IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
MY_ADDRESS_LIST ADDRESS_LIST;
TYPE ACCT_LIST IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
MY_ACCT_LIST ACCT_LIST;
-------------------------------------返回附件源文件所在目錄或者名稱--------------------------------------
FUNCTION GET_FILE(P_FILE VARCHAR2,
P_GET INT) RETURN VARCHAR2 IS
--p_get=1 表示返回目錄
--p_get=2 表示返回文件名
L_FILE VARCHAR2(1000);
BEGIN
IF INSTR(P_FILE, '') > 0 THEN
--windows
IF P_GET = 1 THEN
L_FILE := SUBSTR(P_FILE, 1, INSTR(P_FILE, '', -1) - 1);
ELSIF P_GET = 2 THEN
L_FILE := SUBSTR(P_FILE, - (LENGTH(P_FILE) - INSTR(P_FILE, '', -1)));
END IF;
ELSIF INSTR(P_FILE, '/') > 0 THEN
--linux/unix
IF P_GET = 1 THEN
L_FILE := SUBSTR(P_FILE, 1, INSTR(P_FILE, '/', -1) - 1);
ELSIF P_GET = 2 THEN
L_FILE := SUBSTR(P_FILE, - (LENGTH(P_FILE) - INSTR(P_FILE, '/', -1)));
END IF;
END IF;
RETURN L_FILE;
END;
---------------------------------------------刪除directory------------------------------------
PROCEDURE DROP_DIRECTORY(P_DIRECTORY_NAME VARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE 'drop directory ' || P_DIRECTORY_NAME;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
--------------------------------------------------創建directory-----------------------------------------
PROCEDURE CREATE_DIRECTORY(P_DIRECTORY_NAME VARCHAR2,
P_DIRVARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE 'create directory ' || P_DIRECTORY_NAME || ' as ''' ||
P_DIR || '''';
EXECUTE IMMEDIATE 'grant read,write on directory ' || P_DIRECTORY_NAME ||
' to public';
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
--------------------------------------------分割郵件地址或者附件地址-----------------------------------
PROCEDURE P_SPLITE_STR(P_STRVARCHAR2,
P_SPLITE_FLAG INT DEFAULT 1) IS
L_ADDR VARCHAR2(254) := '';
L_LEN INT;
L_STR VARCHAR2(4000);
JINT := 0; --表示郵件地址或者附件的個數
BEGIN
/*處理接收郵件地址列表,包括去空格、將;轉換為,等*/
L_STR := TRIM(RTRIM(REPLACE(REPLACE(P_STR, ';', ','), ' ', ''), ','));
L_LEN := LENGTH(L_STR);
FOR I IN 1 .. L_LEN LOOP
IF SUBSTR(L_STR, I, 1) <> ',' THEN
L_ADDR := L_ADDR || SUBSTR(L_STR, I, 1);
ELSE
J := J + 1;
IF P_SPLITE_FLAG = 1 THEN --表示處理郵件地址
--前后需要加上'<>',否則很多郵箱將不能發送郵件
L_ADDR := '<' || L_ADDR || '>';
--調用郵件發送過程
MY_ADDRESS_LIST(J) := L_ADDR;
ELSIF P_SPLITE_FLAG = 2 THEN --表示處理附件名稱
MY_ACCT_LIST(J) := L_ADDR;
END IF;
L_ADDR := '';
END IF;
IF I = L_LEN THEN
J := J + 1;
IF P_SPLITE_FLAG = 1 THEN
--調用郵件發送過程
L_ADDR := '<' || L_ADDR || '>';
MY_ADDRESS_LIST(J) := L_ADDR;
ELSIF P_SPLITE_FLAG = 2 THEN
MY_ACCT_LIST(J) := L_ADDR;
END IF;
END IF;
END LOOP;
END;
------------------------------------------------寫郵件頭和郵件內容------------------------------------------
PROCEDURE WRITE_DATA(P_CONN IN OUT NOCOPY UTL_SMTP.CONNECTION,
P_NAME IN VARCHAR2,
P_VALUE IN VARCHAR2,
P_SPLITE VARCHAR2 DEFAULT ':',
P_CRLF VARCHAR2 DEFAULT L_CRLF) IS
BEGIN
/* utl_raw.cast_to_raw 對解決中文亂碼問題很重要*/
UTL_SMTP.WRITE_RAW_DATA(P_CONN, UTL_RAW.CAST_TO_RAW(CONVERT(P_NAME ||
P_SPLITE ||
P_VALUE ||
P_CRLF, 'ZHS16GBK')));
END;
----------------------------------------寫MIME郵件尾部-----------------------------------------------------
PROCEDURE
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男女自偷自拍图片另类| 性色av一区二区三区| 欧美日韩成人在线观看| 亚洲国产精品yw在线观看| 亚洲欧美在线免费| 欧美成人亚洲成人| 国产综合香蕉五月婷在线| 92国产精品久久久久首页| 日韩欧美在线观看| 精品久久久999| 最好看的2019年中文视频| 成人黄色av网| 狠狠躁18三区二区一区| 日韩经典中文字幕在线观看| 久久久久久亚洲精品| 在线日韩精品视频| 日韩高清电影免费观看完整| 亚洲国产高清高潮精品美女| 亚洲色图50p| 日韩免费观看在线观看| 亚洲自拍偷拍视频| 精品日韩美女的视频高清| 国产精品一区专区欧美日韩| 亚洲a在线播放| 91色视频在线观看| 8090成年在线看片午夜| 日韩国产欧美精品一区二区三区| 久久视频在线看| 激情成人中文字幕| 亚洲美腿欧美激情另类| 亚洲视频一区二区三区| 国产亚洲欧美另类中文| 欧美激情视频在线观看| 国内精品视频一区| 亚洲理论在线a中文字幕| 91精品国产91久久久久久久久| 久久精品中文字幕电影| 日本道色综合久久影院| www.日韩不卡电影av| 精品亚洲国产成av人片传媒| 狠狠躁夜夜躁久久躁别揉| 91精品视频在线看| 久久视频在线直播| 亚洲欧美视频在线| 欧美精品在线观看91| 亚洲第一福利视频| 97精品久久久| 久久精品影视伊人网| 欧美视频在线观看 亚洲欧| 亚洲欧美在线免费| 欧美制服第一页| 夜夜嗨av一区二区三区四区| 国产精品中文字幕在线| 欧美第一淫aaasss性| 亚洲天天在线日亚洲洲精| 欧美高清视频在线| 亚洲乱码国产乱码精品精天堂| 最好看的2019的中文字幕视频| 亚洲欧洲免费视频| 亚洲成人激情在线| 色偷偷9999www| 日韩电影在线观看免费| 这里只有精品视频在线| 亚洲免费av片| 欧美日韩在线观看视频小说| 成人午夜激情网| 精品久久久久久久大神国产| 伊人亚洲福利一区二区三区| 国内外成人免费激情在线视频| 亚洲毛片在线免费观看| 97成人精品视频在线观看| 国产精品444| 欧美日本中文字幕| 亚洲va欧美va国产综合久久| 97超碰色婷婷| 国产精品一区二区三区毛片淫片| 中文字幕日韩精品有码视频| 国产亚洲精品va在线观看| 国产在线一区二区三区| 久久精品国产96久久久香蕉| 亚洲奶大毛多的老太婆| 亚洲精品动漫久久久久| 亚洲va欧美va在线观看| 另类图片亚洲另类| 亚洲大胆人体视频| 97免费视频在线| 欧美性xxxx在线播放| 亚洲人成绝费网站色www| 亚洲一区二区三区视频播放| 国产亚洲一区二区精品| 精品一区二区三区四区在线| 亚洲欧美日韩成人| 欧美专区在线视频| 日韩精品欧美国产精品忘忧草| 欧美在线视频免费观看| 精品呦交小u女在线| 少妇高潮 亚洲精品| 亚洲毛片在线看| 色吧影院999| 国内精品久久久久久| 亚洲激情视频网站| 91最新国产视频| 91精品国产777在线观看| 国产精品一区久久久| 亚洲精品久久久久久久久久久| 亚洲精品动漫久久久久| 精品成人乱色一区二区| 91系列在线观看| 亚洲精品日韩丝袜精品| 欧美激情一区二区三级高清视频| 久久久久国产精品免费| 青青草原成人在线视频| 成人黄色在线观看| 国产精品中文字幕在线| 国产一区二区三区日韩欧美| 久久久91精品国产一区不卡| 色爱精品视频一区| 91亚洲一区精品| 91大神福利视频在线| 国产精品成人va在线观看| 亚洲天堂av电影| 日韩av免费看网站| 亚洲视频在线观看| 亚洲黄色在线看| 精品国产一区久久久| 国产精品6699| 97色在线观看免费视频| 91九色单男在线观看| 亚洲欧洲中文天堂| 日韩免费黄色av| 免费av在线一区| 亚洲精品日韩丝袜精品| 亚洲欧美日韩网| 国产精品久久久久久久久久小说| 91精品国产91久久久久久| 欧美老女人www| www日韩中文字幕在线看| 欧美极品少妇xxxxⅹ裸体艺术| 97色在线观看免费视频| 中文字幕精品一区久久久久| 国产精品美女久久久免费| 欧美黑人xxxx| 欧美高清视频免费观看| 91精品视频免费| 欧美国产在线视频| 国产精品入口夜色视频大尺度| 欧美亚洲另类视频| 日韩免费精品视频| 欧美激情一二三| 欧美日韩精品在线视频| 国产又爽又黄的激情精品视频| 久久精品99无色码中文字幕| 国产亚洲视频在线观看| 91欧美日韩一区| 日韩av在线网| 久久天天躁狠狠躁夜夜躁2014| 欧美最顶级的aⅴ艳星| 亚洲少妇中文在线| 国产视频福利一区| 欧美一区二区影院| 中文亚洲视频在线| 久久久久久12| 国产一区二区欧美日韩| 国内精品久久久久伊人av|