オラクルでメールを送ってみる
oracleのマニュアルみながらutl_smtpパッケージ使って
id:yohei-aにメールを送ってみたw
DECLARE c UTL_SMTP.CONNECTION; PROCEDURE send_header(name IN VARCHAR2, header IN VARCHAR2) AS BEGIN UTL_SMTP.WRITE_DATA(c, name || ': ' || header || UTL_TCP.CRLF); END; BEGIN c := UTL_SMTP.OPEN_CONNECTION('-----------------------'); UTL_SMTP.HELO(c, 'foo.com'); UTL_SMTP.MAIL(c, '-----------------------'); UTL_SMTP.RCPT(c, '-----------------------'); UTL_SMTP.OPEN_DATA(c); send_header('From', '"Sender" <--------------------------->'); send_header('To', '"Recipient" <--------------------------->'); send_header('Subject', 'Konnichiwa'); UTL_SMTP.WRITE_DATA(c, UTL_TCP.CRLF || 'niwa desu. utl_smtp package wo tukatte mail okutte mimasita.'); UTL_SMTP.CLOSE_DATA(c); UTL_SMTP.QUIT(c); EXCEPTION WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN BEGIN UTL_SMTP.QUIT(c); EXCEPTION WHEN UTL_SMTP.TRANSIENT_ERROR OR UTL_SMTP.PERMANENT_ERROR THEN NULL; -- When the SMTP server is down or unavailable, we don't have -- a connection to the server. The QUIT call will raise an -- exception that we can ignore. END; raise_application_error(-20000, 'Failed to send mail due to the following error: ' || sqlerrm); END; /
数分後にスパムメールが来たとid:youhei-aから言われましたがww
ひとまず2バイト文字はおくれませんでした。
きっとエンコードすれば良いはず
本当はutl_mail使いたかったのですが、「引数がおかしいよ?」てオラクルに怒られて
中見ようとおもったら、パッケージボディがラッピングされてて見れなかったのでひとまず放置
あとは、utl_smtpをプロシージャ内で使うときにACLではねられてしまったので調査中
あと何個か解決したら、これとjob_schedulerでがばがば送れる!