oracle发送邮件

CREATE OR REPLACE PROCEDURE send_mail (smtp_server IN VARCHAR2,
port IN NUMBER,
login_user IN VARCHAR2,
login_pass IN VARCHAR2,
mailfrom IN VARCHAR2,
mailto IN VARCHAR2,
msg_head IN VARCHAR2,
msg_body IN CLOB)
AS
v_offset NUMBER;
v_ammount NUMBER;
v_position NUMBER;
v_length NUMBER;
v_mailto_tmp1 varchar2(1000);
v_mailto_tmp2 varchar2(1000);
mail_conn UTL_SMTP.CONNECTION;
BEGIN
mail_conn := UTL_SMTP.open_connection (smtp_server, port);
UTL_SMTP.helo (mail_conn, smtp_server);
UTL_SMTP.command (mail_conn, 'AUTH LOGIN');
UTL_SMTP.command (
mail_conn,
UTL_RAW.CAST_TO_VARCHAR2 (
UTL_ENCODE.base64_encode (UTL_RAW.cast_to_raw (login_user))
)
);
UTL_SMTP.command (
mail_conn,
UTL_RAW.CAST_TO_VARCHAR2 (
UTL_ENCODE.base64_encode (UTL_RAW.cast_to_raw (login_pass))
)
);
UTL_SMTP.mail (mail_conn, mailfrom);

v_offset := 1;
v_position := 1;
v_mailto_tmp2 := mailto;
v_length := length(v_mailto_tmp2);
LOOP
v_position:=instr(v_mailto_tmp2,';');
if v_position = 0 then
UTL_SMTP.rcpt (mail_conn, v_mailto_tmp2);
end if;
exit when v_position = 0;
v_length := length(v_mailto_tmp2);
v_mailto_tmp1 := trim(substr(v_mailto_tmp2,v_offset,v_position-1));
v_mailto_tmp2 := trim(substr(v_mailto_tmp2,v_position+1,v_length+1-v_position));
UTL_SMTP.rcpt (mail_conn, v_mailto_tmp1);
END LOOP;

UTL_SMTP.open_data (mail_conn);
UTL_SMTP.write_raw_data(mail_conn, UTL_RAW.cast_to_raw (msg_head));
v_offset := 1;
v_ammount := 1900;

WHILE v_offset < DBMS_LOB.getlength (msg_body)
LOOP
UTL_SMTP.write_raw_data (
mail_conn,
UTL_RAW.cast_to_raw (
DBMS_LOB.SUBSTR (msg_body, v_ammount, v_offset)
)
);
v_offset := v_offset + v_ammount;
v_ammount :=
LEAST (v_ammount, DBMS_LOB.getlength (msg_body) - v_ammount);
END LOOP;

UTL_SMTP.close_data (mail_conn);
UTL_SMTP.quit (mail_conn);
END;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值