程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle 郵件發送

oracle 郵件發送

編輯:Oracle教程

oracle 郵件發送


CREATE OR REPLACE PROCEDURE PRC_sendmail (     p_receiver  VARCHAR2,     -- 郵件接收人     p_subject   VARCHAR2,     -- 郵件標題     p_message   VARCHAR2      -- 郵件正文 ) IS     --下面四個變量請根據實際郵件服務器進行賦值     v_smtphost           VARCHAR2(30)       := 'smtp.qq.com';                  --SMTP服務器地址(hotmail為smtp.live.com,測試未通過)     v_smtpport           number(5)          :=25;                                       --smtp服務端口     v_user               VARCHAR2(30)       := '[email protected]';          --登錄SMTP服務器的用戶名     v_pass               VARCHAR2(20)       := 'XXXXXX';                             --登錄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_smtphost, v_smtpport);     --是用 ehlo() 而不是 helo() 函數     --否則會報:ORA-29279: SMTP 永久性錯誤: 503 5.5.2 Send hello first.     UTL_SMTP.ehlo(v_conn, v_smtphost);        -- smtp服務器登錄校驗     UTL_SMTP.command(v_conn, 'AUTH LOGIN');                 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_receiver||'>');       -- 創建要發送的郵件內容 注意報頭信息和郵件正文之間要空一行     v_msg :='Date:'|| TO_CHAR(SYSDATE, 'yyyy mm dd hh24:mi:ss')             || UTL_TCP.CRLF || 'From: '|| v_sender || ''             || UTL_TCP.CRLF || 'To: ' || p_receiver || ''             || 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);      UTL_SMTP.quit(v_conn); END PRC_sendmail; / 執行腳本: SQL> exec PRC_sendmail(p_receiver => '[email protected]',p_subject => 't張ttt',p_message => 'yy在yy');

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved