日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

设置邮件发送

發(fā)布時間:2024/4/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设置邮件发送 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、設(shè)置郵箱服務(wù)器連接




BEGIN
--1.創(chuàng)建訪問控制列表sendmail.xml,sendmail.xml控制列表擁有connect權(quán)限,并把這個權(quán)限給了B用戶,
? DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
?????????????????????? acl=> 'sendmail.xml',?????????????????????? -- ACL的名字,自己定義?? ?
?????????????????????? description => 'sendmail ACL',????????? -- ACL的描述
?????????????????????? principal?? => 'TANG',????????????????????????????? -- 這里是用戶名,大寫,表示把這個ACL的權(quán)限賦給B用戶
?????????????????????? is_grant??? => true,??????????????????????????? --true:授權(quán) ;false:禁止
??????????????????????? privilege?? => 'connect');???????????????????? --授予或者禁止的網(wǎng)絡(luò)權(quán)限

--2.為sendmail.xml控制列表添加resolve權(quán)限,且賦給B用戶
? DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
?????????????????????????? acl=> 'sendmail.xml',
?????????????????????????????????????? principal => 'TANG',
?????????????????????????????????????? is_grant? => true,
?????????????????????????????????????? privilege => 'resolve');

--3.為控制列表ACL sendmail.xml分配可以connect和resolve的host
? DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
??????????????????????? acl? => 'sendmail.xml',
??????????????????????????????????? host => '192.168.10.202');? --smtp.163.com是郵箱服務(wù)器主機(jī)名
COMMIT;
END;

設(shè)置成功可以查詢到:


SELECT host, lower_port, upper_port, acl
FROM dba_network_acls;


SELECT acl,
principal,
privilege,
is_grant,
TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
FROM dba_network_acl_privileges;


二、郵件發(fā)送存儲過程:


CREATE OR REPLACE PROCEDURE send_mail2
(
? p_recipient VARCHAR2 default '*',
?? -- 郵件接收人
? p_subject VARCHAR2 default 'Oracle郵件:' || to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
?? -- 郵件標(biāo)題
? p_message VARCHAR2 default 'Oracle郵件正文'
) IS

? --下面四個變量請根據(jù)實際郵件服務(wù)器進(jìn)行賦值
? v_mailhost VARCHAR2(30) := '192.168.10.202'; --SMTP服務(wù)器地址
? v_user???? VARCHAR2(30) := 'oracle@mail.server.com'; --登錄SMTP服務(wù)器的用戶名
? v_pass???? VARCHAR2(20) := 'oracle'; --登錄SMTP服務(wù)器的密碼
? v_sender?? VARCHAR2(50) := 'oracle@mail.server.com'; --發(fā)送者郵箱,一般與 ps_user 對應(yīng)

? v_conn UTL_SMTP.connection; --到郵件服務(wù)器的連接
? v_msg? VARCHAR2(4000); --郵件內(nèi)容

BEGIN

? v_conn := UTL_SMTP.open_connection(v_mailhost, 25);

? UTL_SMTP.helo(v_conn, v_mailhost); --有些服務(wù)器要用UTL_SMTP.ehlo() 來與服務(wù)器打招呼

? UTL_SMTP.command(v_conn, 'AUTH LOGIN'); -- smtp服務(wù)器登錄校驗
? UTL_SMTP.command(v_conn, UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));
? UTL_SMTP.command(v_conn, UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass))));

? UTL_SMTP.mail(v_conn, '<' || v_sender || '>'); --設(shè)置發(fā)件人
? UTL_SMTP.rcpt(v_conn, '<' || p_recipient || '>'); --設(shè)置收件人

? -- 創(chuàng)建要發(fā)送的郵件內(nèi)容 注意報頭信息和郵件正文之間要空一行
? v_msg := 'Date:' || to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') || UTL_TCP.CRLF || 'From: ' || v_sender || '' ||
?????????? UTL_TCP.CRLF || 'To: ' || p_recipient || '' || UTL_TCP.CRLF || 'Subject: ' || p_subject || UTL_TCP.CRLF ||
?????????? UTL_TCP.CRLF -- 這前面是報頭信息
?????????? || p_message; -- 這個是郵件正文

? UTL_SMTP.open_data(v_conn); --打開流
? UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(v_msg)); --這樣寫標(biāo)題和內(nèi)容都能用中文
? UTL_SMTP.close_data(v_conn); --關(guān)閉流

? UTL_SMTP.quit(v_conn); --關(guān)閉連接

? dbms_output.put_line('郵件發(fā)送成功!');

EXCEPTION

? WHEN OTHERS THEN
??? dbms_output.put_line('郵件發(fā)送失敗!');
??? DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);
??? DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);
END;


總結(jié)

以上是生活随笔為你收集整理的设置邮件发送的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。