create
orreplace
procedure
send_mail(
2p_recipient
varchar2
, --
郵件接收人
3p_subject
varchar2
, --
郵件標題
4p_message
varchar2
--郵件正文5)
6is78
--下面四個變數請根據實際郵件伺服器進行賦值
9v_mailhost
varchar2(30
) :=
'smtp.***.com
';
--smtp伺服器位址
10v_user
varchar2(30
) :=
'user
';
--登入smtp伺服器的使用者名稱
11v_pass
varchar2(20
) :=
'pwd
';
--登入smtp伺服器的密碼
12v_sender
varchar2(50
) :=
'user@***.com
';
--傳送者郵箱,一般與 ps_user 對應
1314
v_conn utl_smtp. connection ;
--到郵件伺服器的連線
15v_msg
varchar2
(4000
);
--郵件內容
1617
begin
1819
v_conn :
=utl_smtp.open_connection(v_mailhost,
25);
20utl_smtp.ehlo(v_conn, v_mailhost);
--是用 ehlo() 而不是 helo() 函式
21--
否則會報:ora-29279: smtp 永久性錯誤: 503 5.5.2 send hello first.
2223
utl_smtp.command(v_conn,
'auth login
');
--smtp伺服器登入校驗
24utl_smtp.command(v_conn,utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(v_user))));
25utl_smtp.command(v_conn,utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(v_pass))));
2627
utl_smtp.mail(v_conn, v_sender);
--設定發件人
28utl_smtp.rcpt(v_conn, p_recipient);
--設定收件人
2930
--建立要傳送的郵件內容 注意報頭資訊和郵件正文之間要空一行
31v_msg :='
date:'||
to_char(sysdate,
'dd mon yy hh24:mi:ss')
32||
utl_tcp.crlf ||'
from: '||
'<'||
v_sender ||'
>'33
||utl_tcp.crlf ||'
to: '||
'<'||
p_recipient ||'
>'34
||utl_tcp.crlf ||'
subject: '||
p_subject
35||
utl_tcp.crlf
||utl_tcp.crlf
--這前面是報頭資訊
36||
p_message;
--這個是郵件正文
3738
utl_smtp.open_data(v_conn);
--開啟流
39utl_smtp.write_raw_data(v_conn, utl_raw.cast_to_raw(v_msg));
--這樣寫標題和內容都能用中文
40utl_smtp.close_data(v_conn);
--關閉流
41utl_smtp.quit(v_conn);
--關閉連線
4243
exception
4445
when
others
then
46dbms_output.put_line(dbms_utility.format_error_stack);
47dbms_output.put_line(dbms_utility.format_call_stack);
4849
endsend_mail;
【補充】郵件內容支援html方式如下: 1
utl_smtp.open_data(v_conn);
--開啟流23
utl_smtp.write_data(v_conn,
'from:'||
v_sender
||utl_tcp.crlf);
4utl_smtp.write_data(v_conn,
'to:'||
p_recipient
||utl_tcp.crlf);
5utl_smtp.write_raw_data(v_conn, utl_raw.cast_to_raw(
convert('
subject:'||
p_subject
||utl_tcp.crlf,
'zhs16gbk
')));67
utl_smtp.write_raw_data(v_conn, utl_raw.cast_to_raw(
convert('
content-type:text/html;charset=gbk'||
utl_tcp.crlf,
'zhs16gbk
')));
8utl_smtp.write_data(v_conn, utl_tcp.crlf);
9 utl_smtp.write_raw_data(v_conn, utl_raw.cast_to_raw(
convert
(p_message,
'zhs16gbk
')));
--這樣寫標題和內容都能用中文
10utl_smtp.close_data(v_conn);
--關閉流
11utl_smtp.quit(v_conn);
--關閉連線
sql Server 資料庫傳送郵件
水晶 create proc 傳送郵件 收件人郵箱 varchar 2000 抄送人郵箱 varchar 2000 asbegin declare table table 投訴號 varchar 2000 預計損失 varchar 20 滯留小時 int,審核人varchar 20 審核狀態 var...
利用jmail類庫傳送郵件
因為微軟提供的傳送郵件類需要你有郵件伺服器,所以只有用jmail類庫 jmail.messageclass ms new jmail.messageclass ms.charset gb2312 ms.contenttype text html ms.isoencodeheaders false m...
apache james 傳送郵件 儲存 資料庫
最近想把所有人的傳送記錄清查一下,所以想把傳送記錄儲存到資料庫中 但上網沒有找到資料,所以自己修改config.xml試了一下 找到將下邊的這種檔案儲存方式注釋 file var mail outgoing 把下邊的資料庫儲存方式的注釋開啟或者新增 file var mail outgoing 這樣...