ORACLE 配置郵件伺服器

2021-09-30 01:52:31 字數 4304 閱讀 9300

2 在oracle sql developer中執行 必須有begin end

1建立 acl

begin

dbms_network_acl_admin.create_acl(acl => 'email.xml',

description => 'enables network permissions for the e-mail server',

principal => 'c##esd_monitor', --表示賦予哪個使用者 必須大寫

is_grant => true,

privilege => 'resolve',

start_date => null,

end_date => null);

end;

2賦予許可權 

begin

dbms_network_acl_admin.add_privilege(acl => 'email.xml', --同上xml名稱

principal => 'c##esd_monitor', --表示賦予哪個使用者 必須大寫

is_grant => true,

privilege => 'connect', --許可權名

start_date => null,

end_date => null);

end;

3設定埠 

begin

dbms_network_acl_admin.assign_acl ( -- 該段命令意思是允許訪問acl名為utl_sendmail.xml下授權的使用者,使用oracle網路訪問包,所允許訪問的目的主機,及其埠範圍。

acl => 'email.xml',

host => '*'-- , -- ip位址或者網域名稱,填寫http://localhost:9000/hello與http://localhost:9000/是會報host無效的

-- 且建議使用ip位址或者使用網域名稱,若用localhost,當oracle不是安裝在本機上的情況下,會出現問題

-- lower_port => 9000, -- 允許訪問的起始埠號

-- upper_port => null -- 允許訪問的截止埠號

);end;

4查詢許可權設定情況 

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;

5建立郵件傳送儲存過程

create or replace procedure send_mail(p_recipient varchar2, -- 郵件接收人

p_subject varchar2, -- 郵件標題

p_message varchar2, -- 郵件正文

p_type number -- 1文字 2html

) as

--下面四個變數請根據實際郵件伺服器進行賦值

v_mailhost varchar2(30) := 'smtp.qq.com'; --smtp伺服器位址

v_user varchar2(30) := '[email protected]'; --登入smtp伺服器的使用者名稱

v_pass varchar2(20) := '111'; --登入smtp伺服器的密碼 授權碼

v_sender varchar2(50) := '[email protected]'; --傳送者郵箱,一般與 ps_user 對應

v_conn utl_smtp.connection; --到郵件伺服器的連線

v_msg varchar2(4000); --郵件內容

begin

v_conn := utl_smtp.open_connection(v_mailhost, 25);

utl_smtp.ehlo(v_conn, v_mailhost); --是用 ehlo() 而不是 helo() 函式

--否則會報:ora-29279: smtp 永久性錯誤: 503 5.5.2 send hello first.

utl_smtp.command(v_conn, 'auth login'); -- smtp伺服器登入校驗

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 || '>'); --設定發件人 注:網上很多資料直接寫v_sender,這樣寫會報ora-29279: smtp 500 error

utl_smtp.rcpt(v_conn, '<' || p_recipient || '>'); --設定收件人

utl_smtp.open_data(v_conn); --開啟流

if p_type = 1 then

-- 建立要傳送的郵件內容 注意報頭資訊和郵件正文之間要空一行

v_msg := 'date:' || to_char(sysdate, 'dd mon yy 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.write_raw_data(v_conn, utl_raw.cast_to_raw(v_msg)); --這樣寫標題和內容都能用中文

elsif p_type = 2 then

utl_smtp.write_data(v_conn,

'from:' || '<' || v_sender || '>' || utl_tcp.crlf);

utl_smtp.write_data(v_conn,

'to:' || '<' || p_recipient || '>' ||

utl_tcp.crlf);

utl_smtp.write_raw_data(v_conn,

utl_raw.cast_to_raw(convert('subject:' ||

p_subject ||

utl_tcp.crlf,

'zhs16gbk')));

utl_smtp.write_raw_data(v_conn,

utl_raw.cast_to_raw(convert('content-type:text/html;charset=gbk' ||

utl_tcp.crlf,

'zhs16gbk')));

utl_smtp.write_data(v_conn, utl_tcp.crlf);

utl_smtp.write_raw_data(v_conn,

utl_raw.cast_to_raw(convert(p_message,

'zhs16gbk'))); --這樣寫標題和內容都能用中文

end if;

utl_smtp.close_data(v_conn); --關閉流

utl_smtp.quit(v_conn); --關閉連線

exception

when others then

dbms_output.put_line(dbms_utility.format_error_stack);

dbms_output.put_line(dbms_utility.format_call_stack);

end;

Gitblit伺服器郵件配置

關於gitblit在windows下郵箱配置,網上資料比較少,自己摸索步驟如下,實測有效,另外,如果不了解smtp協議,建議配置之前先去大概了解下,當然沒有任何協議基礎,按照如下說明直接配置也是ok的,只是了解了smtp協議,會對郵箱相關配置的理解較為深刻的 1 需要配置stmp伺服器,依然在def...

james郵件伺服器簡單配置

在做公司的郵件開發的時候,需要臨時搭建乙個郵件伺服器,進行郵件測試。所以去 www.apache.org 找了 james。james是個開源的郵件伺服器,支援眾多協議。具體內容請參看 www.apache.org。我這裡做了乙個james的簡單配置,以供以後使用。使用說明 1 伺服器配置 配置 2...

Postfix 郵件伺服器的配置

yum install postfix dovecot yum remove sendmail請注意,centos 5中的預設mta 是sendmail。如果您不將預設mta作為字尾,更新字尾可能會導致預設mta恢復為sendmail。接下來,我們需要配置電子郵件伺服器的各個部分。postfix配置...