kinjouj.github.io

utl_smtp

2010-02-03T00:00:00+09:00 PL/SQL

PL/SQLでメールを送信するメモ

declare

    svr varchar2(50) := "localhost";
    fr varchar2(50) := "hoge@localhost";
    tot varchar2(50) := "fuga@localhost";
    sbj varchar2(100) := "テスト";
    msg varchar2(1000);
    smtp utl_smtp.connection;

begin
    msg := "テスト" || chr(13) || chr(10);
    smtp := utl_smtp.open_connection(svr, 25);

    utl_smtp.helo(smtp,svr);
    utl_smtp.mail(smtp,fr);
    utl_smtp.rcpt(smtp,tot);
    utl_smtp.open_data(smtp);
    utl_smtp.write_data(smtp,"To:" || tot || chr(13) || chr(10));
    utl_smtp.write_data(smtp,"From:" || fr || chr(13) || chr(10));
    utl_smtp.write_data(smtp, "Subject=?iso-2022-jp?B?");
    utl_smtp.write_raw_data(smtp,
        utl_encode.base64_encode(utl_raw.cast_to_raw(sbj))
    );
    utl_smtp.write_data(smtp, "?=" || chr(13) || chr(10));
    utl_smtp.write_data(smtp, "MIME-Version=1.0" || chr(13) || chr(10));
    utl_smtp.write_data(smtp, "Content-Type: text/plain;" || chr(13) || chr(10));
    utl_smtp.write_data(smtp, chr(9) || "charset: iso-2022-jp" || chr(13) || chr(10));
    utl_smtp.write_data(smtp, "Content-Tranfer-Encoding: base64" || chr(13) || chr(10));
    utl_smtp.write_data(smtp, chr(13) || chr(10));
    utl_smtp.write_raw_data(smtp, utl_encode.base64_encode(utl_raw.cast_to_raw(msg)));
    utl_smtp.close_data(smtp);
    utl_smtp.quit(smtp);
end;