CREATE OR REPLACE PROCEDURE send_mail (
p_recipient IN VARCHAR2,
p_sender IN VARCHAR2,
p_pass IN VARCHAR2,
p_message IN VARCHAR2,
p_subject IN VARCHAR2
)
IS
v_mailhost varchar2(30); -- SMTP服务器地址
mail_conn utl_smtp.connection;
msg varchar2(4000);
p_user varchar2(30); -- 登录SMTP服务器的用户名
BEGIN
select substr(p_sender,instr(p_sender,'@'),100) INTO p_user from dual;
select substr(p_sender,1,instr(p_sender,'@')-1 ) INTO p_user from dual; /* 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行 */
msg := 'Date:' ||to_char(sysdate,'dd mon yy hh24:mi:ss') || utl_tcp.CRLF ||
'From: ' || p_sender || '<'||p_sender||'>' ||utl_tcp.CRLF ||
'To: '|| p_recipient || '<' || p_recipient || '>' ||utl_tcp.CRLF||
'Subject: '||p_subject || utl_tcp.CRLF ||utl_tcp.CRLF||
p_message;
-- dbms_output.put_line(msg);
mail_conn := utl_smtp.open_connection(v_mailhost,25);
utl_smtp.helo(mail_conn,v_mailhost);
/* smtp服务器登录校验 */
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(p_user))));
utl_smtp.command(mail_conn, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(p_pass)))); utl_smtp.mail(mail_conn,p_sender);
utl_smtp.rcpt(mail_conn,p_recipient);
/* 发送数据 */
utl_smtp.data(mail_conn, msg);
utl_smtp.quit(mail_conn);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(dbms_utility.format_error_stack);
dbms_output.put_line(dbms_utility.format_call_stack);
END send_mail;
p_recipient IN VARCHAR2,
p_sender IN VARCHAR2,
p_pass IN VARCHAR2,
p_message IN VARCHAR2,
p_subject IN VARCHAR2
)
IS
v_mailhost varchar2(30); -- SMTP服务器地址
mail_conn utl_smtp.connection;
msg varchar2(4000);
p_user varchar2(30); -- 登录SMTP服务器的用户名
BEGIN
select substr(p_sender,instr(p_sender,'@'),100) INTO p_user from dual;
select substr(p_sender,1,instr(p_sender,'@')-1 ) INTO p_user from dual; /* 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行 */
msg := 'Date:' ||to_char(sysdate,'dd mon yy hh24:mi:ss') || utl_tcp.CRLF ||
'From: ' || p_sender || '<'||p_sender||'>' ||utl_tcp.CRLF ||
'To: '|| p_recipient || '<' || p_recipient || '>' ||utl_tcp.CRLF||
'Subject: '||p_subject || utl_tcp.CRLF ||utl_tcp.CRLF||
p_message;
-- dbms_output.put_line(msg);
mail_conn := utl_smtp.open_connection(v_mailhost,25);
utl_smtp.helo(mail_conn,v_mailhost);
/* smtp服务器登录校验 */
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(p_user))));
utl_smtp.command(mail_conn, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(p_pass)))); utl_smtp.mail(mail_conn,p_sender);
utl_smtp.rcpt(mail_conn,p_recipient);
/* 发送数据 */
utl_smtp.data(mail_conn, msg);
utl_smtp.quit(mail_conn);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(dbms_utility.format_error_stack);
dbms_output.put_line(dbms_utility.format_call_stack);
END send_mail;
解决方案 »
- 求11.1.0.7.2升级包下载地址
- 请教一个关于查询的的问题。
- 使用OCI接口一定要安装oracle客户端么?
- 谁有介绍formbuilder的电子书,发一个给我,多谢。
- SQL在客户端慢的问题
- 闪闪红星,放光芒。。。。。终于变成红星了,同喜同喜
- oracle 的自增量字段
- 表间有关系,我如何才能执行如下的语句。
- ORACLE时间的计算问题!
- 简单的问题.都给分的,在客户端和服务器端的程序配通后,客户机上的应用程序如何能够配好连上服务器?
- 服务内设的数据库名为A,set oracle_sid=A,但tnsping A不能OK,搞不懂了,就TNSNAMES.ORA设了个A_db
- 执行sql语句时出现ora-03113的错误?(刚连上数据库时,没问题,过两个小时未使用,再执行sql就报错了)
CREATE OR REPLACE PROCEDURE send_mail (
p_recipient IN VARCHAR2,
p_sender IN VARCHAR2,
p_pass IN VARCHAR2,
p_message IN VARCHAR2,
p_subject IN VARCHAR2
)
IS
v_mailhost varchar2(30); -- SMTP服务器地址
mail_conn utl_smtp.connection;
msg varchar2(4000);
p_user varchar2(30); -- 登录SMTP服务器的用户名
BEGIN
select substr(p_sender,instr(p_sender,'@')+1,100) INTO v_mailhost from dual;
select substr(p_sender,1,instr(p_sender,'@')-1 ) INTO p_user from dual; /* 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行 */
msg := 'Date:' ||to_char(sysdate,'dd mon yy hh24:mi:ss') || utl_tcp.CRLF ||
'From: ' || p_sender || '<'||p_sender||'>' ||utl_tcp.CRLF ||
'To: '|| p_recipient || '<' || p_recipient || '>' ||utl_tcp.CRLF||
'Subject: '||p_subject || utl_tcp.CRLF ||utl_tcp.CRLF||
p_message;
-- dbms_output.put_line(msg);
mail_conn := utl_smtp.open_connection(v_mailhost,25);
utl_smtp.helo(mail_conn,v_mailhost);
/* smtp服务器登录校验 */
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(p_user))));
utl_smtp.command(mail_conn, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(p_pass)))); utl_smtp.mail(mail_conn,p_sender);
utl_smtp.rcpt(mail_conn,p_recipient);
/* 发送数据 */
utl_smtp.data(mail_conn, msg);
utl_smtp.quit(mail_conn);EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(dbms_utility.format_error_stack);
dbms_output.put_line(dbms_utility.format_call_stack);
END send_mail;