利用UTL_SMTP傳送郵件
Oracle提供了UTL_SMTP包,可以傳送EMAIL。
寫了一個很簡單的小例子:
SQL> DECLARE
2 MAIL_CONN UTL_SMTP.CONNECTION;
3 BEGIN
4 MAIL_CONN := UTL_SMTP.OPEN_CONNECTION('mail.itpub.net', 25);
5 UTL_SMTP.HELO(MAIL_CONN, 'mail.itpub.net');
6 UTL_SMTP.COMMAND(MAIL_CONN, 'AUTH LOGIN');
7 UTL_SMTP.COMMAND(MAIL_CONN,
8 UTL_RAW.CAST_TO_VARCHAR2(
9 UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW('yangtingkun@itpub.net'))));
10 UTL_SMTP.COMMAND(MAIL_CONN,
11 UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW('password'))));
12 UTL_SMTP.MAIL(MAIL_CONN, 'yangtingkun@itpub.net');
13 UTL_SMTP.RCPT(MAIL_CONN, 'yangtk@cis.com.cn');
14 UTL_SMTP.DATA(MAIL_CONN, 'TEST');
15 UTL_SMTP.QUIT(MAIL_CONN);
16 END;
17 /
PL/SQL 過程已成功完成。
就這麼一個簡單的不能在簡單的過程,居然花了N個小時才搞定。
首先開啟一個SMTP連線,輸入一個郵件伺服器的地址,注意如果郵件伺服器地址不正確會出現類似這樣的錯誤:
第 1 行出現錯誤:
ORA-29278: SMTP 臨時性錯誤: 421 Service not available
ORA-06512: 在 "SYS.UTL_SMTP", line 21
ORA-06512: 在 "SYS.UTL_SMTP", line 97
ORA-06512: 在 "SYS.UTL_SMTP", line 139
ORA-06512: 在 line 4
隨後輸入的分別是使用者名稱和密碼。
其實本來打算用UTL_MAIL包實現發郵件的功能,使用UTL_MAIL包基本上一行程式碼就可以了,但是現在幾乎所有的郵件伺服器都要求授權驗證,因此只能使用UTL_SMTP包來實現,注意如果使用者名稱、密碼出現錯誤,則會報錯:
第 1 行出現錯誤:
ORA-29279: SMTP 永久性錯誤: 535 authorization failed (#5.7.0)
ORA-06512: 在 "SYS.UTL_SMTP", line 21
ORA-06512: 在 "SYS.UTL_SMTP", line 99
ORA-06512: 在 "SYS.UTL_SMTP", line 159
ORA-06512: 在 line 8
如果沒有將使用者名稱密碼進行編碼就直接傳送,會碰到下面的錯誤:
第 1 行出現錯誤:
ORA-29279: SMTP 永久性錯誤: 501 malformed auth input (#5.5.4)
ORA-06512: 在 "SYS.UTL_SMTP", line 21
ORA-06512: 在 "SYS.UTL_SMTP", line 99
ORA-06512: 在 "SYS.UTL_SMTP", line 159
ORA-06512: 在 line 7
如果沒有設定使用者名稱、密碼,或者使用UTL_MAIL包連線到需要授權驗證的郵件伺服器,則會報錯如下:
第 1 行出現錯誤:
ORA-29279: SMTP 永久性錯誤: 554 auth login first
ORA-06512: 在 "SYS.UTL_SMTP", line 21
ORA-06512: 在 "SYS.UTL_SMTP", line 99
ORA-06512: 在 "SYS.UTL_SMTP", line 241
ORA-06512: 在 "SYS.UTL_MAIL", line 424
ORA-06512: 在 "SYS.UTL_MAIL", line 594
ORA-06512: 在 line 2
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-607846/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用Oracle資料庫傳送郵件Oracle資料庫
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- 傳送郵件
- 郵件傳送
- SpringBoot傳送郵件Spring Boot
- phpcms傳送郵件PHP
- 郵件的傳送
- Laravel傳送郵件Laravel
- Laravel 傳送郵件Laravel
- thinkjs 傳送郵件JS
- PHP傳送郵件PHP
- nodejs 傳送郵件NodeJS
- java郵件傳送Java
- python傳送郵件Python
- Django——郵件傳送Django
- gmail傳送郵件AI
- SpringBoot郵件傳送Spring Boot
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- laravel中使用利用訊息佇列傳送郵件Laravel佇列
- golang傳送郵件(qq郵箱)Golang
- SpringBoot傳送郵件(二)Spring Boot
- SpringBoot傳送郵件(三)Spring Boot
- SpringBoot整合郵件傳送Spring Boot
- 定時傳送郵件
- 使用 smtplib 傳送郵件
- Python SMTP傳送郵件Python
- 郵件傳送API整理API
- php windows 傳送郵件PHPWindows
- Ubuntu的郵件傳送Ubuntu
- Android 快速傳送郵件Android
- 使用phpmailer傳送郵件PHPAI
- 如何傳送電子郵件到別人郵箱?電子郵件傳送的方法
- Springboot 自動傳送郵件Spring Boot
- python實現傳送郵件Python
- Spring Boot整合郵件傳送Spring Boot
- Laravel 傳送郵件報錯Laravel
- Jenkins 如何成功傳送郵件?Jenkins
- Jmeter——SMTP Sampler傳送郵件JMeter
- Alertmanager傳送告警郵件配置