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配置...