使用Oracle的PL/SQL发送Email:
CREATE OR REPLACE PROCEDURE sendEmail(smtp_server VARCHAR2,
from_userid VARCHAR2,
to_userid VARCHAR2,
subject VARCHAR2,
body VARCHAR2,
from_name VARCHAR2 := NULL,
to_name VARCHAR2 := NULL,
content_type VARCHAR2 := NULL)
IS
c utl_smtp.connection;
from_domain VARCHAR2(200) := SUBSTR(from_userid,INSTR(from_userid,'@')+1);
PROCEDURE header(name VARCHAR2, value VARCHAR2) IS
BEGIN
utl_smtp.write_data(c, name || ': ' || value || utl_tcp.CRLF);
END;
BEGIN
c := utl_smtp.open_connection( smtp_server );
utl_smtp.helo(c, from_domain );
utl_smtp.mail(c, from_userid );
utl_smtp.rcpt(c, to_userid );
utl_smtp.open_data(c);
header('From','"'||NVL(from_name,from_userid)||'" <'||from_userid||'>');
header('To','"'||NVL(to_name,to_userid)||'" <'||to_userid||'>');
header('Subject', subject );
header('Content-Type', NVL(content_type,'text/plain'));
utl_smtp.write_data(c, utl_tcp.CRLF || body );
utl_smtp.close_data(c);
utl_smtp.quit(c);
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
utl_smtp.quit(c);
raise_application_error(-20199,'Error sending mail: ' || sqlerrm);
END;
本文介绍了一种利用Oracle PL/SQL过程实现电子邮件发送的方法。该过程通过指定SMTP服务器、发件人、收件人、邮件主题及正文等参数来完成邮件发送任务,并提供了额外的参数用于设置发件人名称、收件人名称和邮件内容类型。
2092

被折叠的 条评论
为什么被折叠?



