ORACLE傳送郵件 例項

2021-09-02 08:36:15 字數 2613 閱讀 5495

**

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 下面四個變數請根據實...