SMTPメール送信

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;
HOSTACE_ORDERGRANT_TYPEINVERTED_PRINCIPALPRINCIPALPRINCIPAL_TYPEPRIVILEGE
*1GRANTNOGSMADMIN_INTERNALDATABASERESOLVE
*2GRANTNOGGSYSDATABASERESOLVE
8.8.8.81GRANTNOtestDATABASECONNECT
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);

タイトルとURLをコピーしました