DBA_HOST_ACESの登録
SMTPサーバーをDBA_HOST_ACESに登録する。
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
acl => 'smtp.xml',
description => 'smtp ACL',
principal => 'OSCAR',
is_grant => true,
privilege => 'connect'
);
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
acl => 'smtp.xml',
host => 'mrelay.noc.sony.co.jp'
);
END;
/
acl ACL の名前 xmlを付ける
description 説明
principal スキーマ名
host SMTPサーバー
確認用のSQL
SELECT * FROM DBA_HOST_ACES
select * from dba_network_acl_privileges;
select * from dba_network_acls;
| HOST | ACE_ORDER | GRANT_TYPE | INVERTED_PRINCIPAL | PRINCIPAL | PRINCIPAL_TYPE | PRIVILEGE |
| * | 1 | GRANT | NO | GSMADMIN_INTERNAL | DATABASE | RESOLVE |
| * | 2 | GRANT | NO | GGSYS | DATABASE | RESOLVE |
| 8.8.8.8 | 1 | GRANT | NO | test | DATABASE | CONNECT |
SMTPサーバーをDBA_HOST_ACESに登録する。
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
acl => 'smtp.xml',
description => 'smtp ACL',
principal => 'OSCAR',
is_grant => true,
privilege => 'connect'
);
END;
/
acl ACL の名前 xmlを付ける
description 説明
principal スキーマ名
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
acl => 'smtp.xml',
host => 'mrelay.noc.sony.co.jp'
);
host SMTPサーバー
削除
BEGIN
DBMS_NETWORK_ACL_ADMIN.DROP_ACL(acl => 'smtp.xml');
END;
メール送信処理
開始手続き
SMTP接続 OPEN
v_MailConn := UTL_SMTP.OPEN_CONNECTION(v_mailhost, 25);
初期ハンドシェイク 開始
UTL_SMTP.HELO(v_MailConn, 'dummy');
トランザクション 開始
UTL_SMTP.MAIL(v_MailConn, p_FromName) --送信元
レシピエント 指定
UTL_SMTP.RCPT(v_MailConn, p_ToMailAdr); --送信先
メイン手続き
--OPEN_DATA, WRITE_DATAを使用する。
UTL_SMTP.OPEN_DATA(v_MailConn);
--送信元
v_Raw := UTL_RAW.CAST_TO_RAW('From: <'||p_FromName||'>'||v_CrLf);
UTL_SMTP.WRITE_RAW_DATA(v_MailConn, v_Raw);
--送信先
v_Raw := UTL_RAW.CAST_TO_RAW('To: '||' <'||p_ToMailAdr||'>'||v_CrLf);
UTL_SMTP.WRITE_RAW_DATA(v_MailConn, v_Raw);
--送信先CC
v_Raw := UTL_RAW.CAST_TO_RAW('Cc: '||' <'||p_CcMailAdr||'>'||v_CrLf);
UTL_SMTP.WRITE_RAW_DATA(v_MailConn, v_Raw);
--SUBJECT
UTL_SMTP.WRITE_DATA(v_MailConn, 'SUBJECT:=?ISO-2022-JP?B?');
UTL_SMTP.WRITE_RAW_DATA(v_MailConn,
UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(p_Subject))
);
--BODY
UTL_SMTP.WRITE_DATA(v_MailConn, '?=' || CHR(13) || CHR(10));
UTL_SMTP.WRITE_DATA(v_MailConn, 'MIME-VERSION: 1.0' || CHR(13) || CHR(10));
UTL_SMTP.WRITE_DATA(v_MailConn, 'CONTENT-TYPE: TEXT/PLAIN;' || CHR(13) || CHR(10));
UTL_SMTP.WRITE_DATA(v_MailConn, CHR(9) || 'CHARSET="ISO-2022-JP"' || CHR(13) || CHR(10));
UTL_SMTP.WRITE_DATA(v_MailConn, 'CONTENT-TRANSFER-ENCODING: BASE64' || CHR(13) || CHR(10));
UTL_SMTP.WRITE_DATA(v_MailConn, CHR(13) || CHR(10));
UTL_SMTP.WRITE_RAW_DATA(v_MailConn,UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(p_Msg01)));
--CLOSE
UTL_SMTP.CLOSE_DATA(v_MailConn);
終了手続き
--セッション解放
UTL_SMTP.QUIT(v_MailConn);