**
create or replace procedure send_mail(
p_recipient varchar2, -- 郵件接收人
p_subject varchar2, -- 郵件標題
p_message varchar2 -- 郵件正文
is--下面四個變數請根據實際郵件伺服器進行賦值
v_mailhost varchar2(30) := 'smtp.***.com'; --smtp伺服器位址
v_user varchar2(30) := 'user'; --登入smtp伺服器的使用者名稱
v_pass varchar2(20) := 'pwd'; --登入smtp伺服器的密碼
v_sender varchar2(50) := 'user@***.com'; --傳送者郵箱,一般與 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); --設定發件人
utl_smtp.rcpt(v_conn, p_recipient); --設定收件人
-- 建立要傳送的郵件內容 注意報頭資訊和郵件正文之間要空一行
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.open_data(v_conn); --開啟流
utl_smtp.write_raw_data(v_conn, utl_raw.cast_to_raw(v_msg)); --這樣寫標題和內容都能用中文
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 send_mail;
utl_smtp.open_data(v_conn); --開啟流
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'))); --這樣寫標題和內容都能用中文
utl_smtp.close_data(v_conn); --關閉流
utl_smtp.quit(v_conn); --關閉連線
郵件傳送例項
sendemail public result sendemail string id,string toemail,string ccemail 模板郵件傳送 param mailbean 郵件類 param toemails 收件人 param ccemails 抄送人 public resul...
C 傳送郵件例項
namespace sendemail public thread thread null public autotimeinfo autotimeinfo public bool exitthread false public struct autotimeinfo int week 0 int ...
Oracle 實現郵件傳送
create or replace procedure send mail p recipient varchar2,郵件接收人 p subject varchar2,郵件標題 p message varchar2,郵件正文 p type number 1文字 2html is 下面四個變數請根據實...