高分请教关于在使用javamail实现在oracle里发送邮件附件的功能! 自已顶一下吧!期待高手ing......! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PROCEDURE sendmail1 ( sender IN VARCHAR2, recipient IN VARCHAR2, subject IN VARCHAR2, message IN VARCHAR2, send IN VARCHAR2 ) IS mailhost VARCHAR2(100) := '10.*.*.*'; mail_conn utl_smtp.connection; crlf VARCHAR2(2) := CHR (13) || CHR (10);mesg VARCHAR2(3000); BEGIN --htp.p('Contacting SMTP server: '||mailhost||'...'); mail_conn := utl_smtp.open_connection (mailhost, 25); --htp.p('Successfully connected to SMTP server: '||mailhost);--mesg := 'Date: ' ||-- TO_CHAR (SYSDATE,'dd Mon yy hh24:mi:ss') ||--TO_CHAR (SYSDATE,'yy mm dd hh24:mi:ss') ||mesg:= 'Date: ' || to_char(sysdate,'YYYY-MON-DD HH24:MI:SS','NLS_DATE_LANGUAGE=AMERICAN') || crlf || --crlf || 'From: <' || sender || '>' || crlf || 'Subject: ' || subject || crlf || 'To: ' || recipient || crlf || '' ||crlf || message; utl_smtp.helo (mail_conn, mailhost); utl_smtp.mail (mail_conn, sender); utl_smtp.rcpt (mail_conn, recipient); utl_smtp.data (mail_conn, mesg); utl_smtp.quit (mail_conn); END SENDMAIL1;CREATE OR REPLACE PROCEDURE SEND_EMAIL( p_sender IN VARCHAR2, --发送者 p_recipient IN VARCHAR2, --接收者 p_title IN VARCHAR2, --主题 p_message IN VARCHAR2, --内容 p_priority IN NUMBER, p_server IN vARCHAR2, --接收邮件的服务器 p_port IN VARCHAR2 --端口号 ) AS l_mail_conn UTL_SMTP.CONNECTION; BEGIN l_mail_conn := UTL_SMTP.OPEN_CONNECTION(p_server, p_port); --默认端口号 UTL_SMTP.HELO(l_mail_conn, p_server); UTL_SMTP.MAIL(l_mail_conn, p_sender); UTL_SMTP.RCPT(l_mail_conn, p_recipient); UTL_SMTP.OPEN_DATA(l_mail_conn);--Email头 /*UTL_SMTP.WRITE_DATA(l_mail_conn,'From:' || p_sender || UTL_TCP.CRLF); --发送者UTL_SMTP.WRITE_DATA(l_mail_conn,'To:' || p_sender || UTL_TCP.CRLF); --接收者UTL_SMTP.WRITE_DATA(l_mail_conn,'Cc:' || p_sender || UTL_TCP.CRLF); --抄送者UTL_SMTP.WRITE_DATA(l_mail_conn,'Subject:' || p_title || UTL_TCP.CRLF); --主题*/UTL_SMTP.WRITE_DATA(l_mail_conn,utl_raw.cast_to_raw(convert('From:' || p_recipient || utl_tcp.CRLF,'gb2312')));UTL_SMTP.WRITE_DATA(l_mail_conn,utl_raw.cast_to_raw(convert('To:' || p_sender || utl_tcp.CRLF,'gb2312')));UTL_SMTP.WRITE_DATA(l_mail_conn,utl_raw.cast_to_raw(convert('Cc: cccc' || utl_tcp.CRLF,'gb2312')));UTL_SMTP.WRITE_DATA(l_mail_conn,utl_raw.cast_to_raw(convert('Subject:' || p_title || utl_tcp.CRLF,'gb2312')));UTL_SMTP.WRITE_DATA(l_mail_conn,'X-Priority: ' || p_priority || UTL_TCP.CRLF); --优先级--内容-- UTL_SMTP.WRITE_DATA(l_mail_conn, p_message); --内容UTL_SMTP.WRITE_DATA(l_mail_conn, utl_raw.cast_to_raw(convert(p_message,'gb2312')));UTL_SMTP.CLOSE_DATA(l_mail_conn);UTL_SMTP.QUIT(l_mail_conn); EXCEPTION WHEN OTHERS THEN UTL_SMTP.QUIT(l_mail_conn);END;参考以下:http://otn.oracle.com/sample_code/tech/pl_sql/htdocs/Utl_Smtp_Sample.html Oracle 怎样从老版本升级(upgrade)到新版本? 求助: 将sqlserver2000中的表导入到oracle中的问题 oracle自动建主键的问题 需要查找这样的数据的SQL语句怎么写啊?急急急! oracle 数据库安装有问题 显卡驱动 to_char转换的时间付值问题 关于vb和orcale的连接问题,告急!!! oracle如何实现不同用户下的对象移动呢? 多个版本的ORACLE可不可以在同一个操作系统中共存啊?(WINNT) 超奇怪的问题 有索引为什么还是全表扫描呢?请高手相助!! 存储过程返回记录集该怎么写啊?在线等待!
sender IN VARCHAR2,
recipient IN VARCHAR2,
subject IN VARCHAR2,
message IN VARCHAR2,
send IN VARCHAR2
)
IS
mailhost VARCHAR2(100) := '10.*.*.*';
mail_conn utl_smtp.connection; crlf VARCHAR2(2) := CHR (13) || CHR (10);
mesg VARCHAR2(3000);
BEGIN
--htp.p('Contacting SMTP server: '||mailhost||'...');
mail_conn := utl_smtp.open_connection (mailhost, 25);
--htp.p('Successfully connected to SMTP server: '||mailhost);
--mesg := 'Date: ' ||
-- TO_CHAR (SYSDATE,'dd Mon yy hh24:mi:ss') ||
--TO_CHAR (SYSDATE,'yy mm dd hh24:mi:ss') ||
mesg:= 'Date: ' || to_char(sysdate,'YYYY-MON-DD HH24:MI:SS','NLS_DATE_LANGUAGE=AMERICAN') || crlf ||
--crlf ||
'From: <' ||
sender ||
'>' ||
crlf ||
'Subject: ' ||
subject ||
crlf ||
'To: ' ||
recipient ||
crlf ||
'' ||crlf ||
message;
utl_smtp.helo (mail_conn, mailhost);
utl_smtp.mail (mail_conn, sender);
utl_smtp.rcpt (mail_conn, recipient);
utl_smtp.data (mail_conn, mesg);
utl_smtp.quit (mail_conn);
END SENDMAIL1;
CREATE OR REPLACE PROCEDURE SEND_EMAIL( p_sender IN VARCHAR2, --发送者
p_recipient IN VARCHAR2, --接收者
p_title IN VARCHAR2, --主题
p_message IN VARCHAR2, --内容
p_priority IN NUMBER, p_server IN vARCHAR2, --接收邮件的服务器
p_port IN VARCHAR2 --端口号
) AS
l_mail_conn UTL_SMTP.CONNECTION;
BEGIN
l_mail_conn := UTL_SMTP.OPEN_CONNECTION(p_server, p_port); --默认端口号 UTL_SMTP.HELO(l_mail_conn, p_server);
UTL_SMTP.MAIL(l_mail_conn, p_sender);
UTL_SMTP.RCPT(l_mail_conn, p_recipient); UTL_SMTP.OPEN_DATA(l_mail_conn);
--Email头 /*
UTL_SMTP.WRITE_DATA(l_mail_conn,'From:' || p_sender || UTL_TCP.CRLF); --发送者
UTL_SMTP.WRITE_DATA(l_mail_conn,'To:' || p_sender || UTL_TCP.CRLF); --接收者
UTL_SMTP.WRITE_DATA(l_mail_conn,'Cc:' || p_sender || UTL_TCP.CRLF); --抄送者
UTL_SMTP.WRITE_DATA(l_mail_conn,'Subject:' || p_title || UTL_TCP.CRLF); --主题
*/
UTL_SMTP.WRITE_DATA(l_mail_conn,utl_raw.cast_to_raw(convert('From:' || p_recipient || utl_tcp.CRLF,'gb2312')));UTL_SMTP.WRITE_DATA(l_mail_conn,utl_raw.cast_to_raw(convert('To:' || p_sender || utl_tcp.CRLF,'gb2312')));UTL_SMTP.WRITE_DATA(l_mail_conn,utl_raw.cast_to_raw(convert('Cc: cccc' || utl_tcp.CRLF,'gb2312')));UTL_SMTP.WRITE_DATA(l_mail_conn,utl_raw.cast_to_raw(convert('Subject:' || p_title || utl_tcp.CRLF,'gb2312')));UTL_SMTP.WRITE_DATA(l_mail_conn,'X-Priority: ' || p_priority || UTL_TCP.CRLF); --优先级--内容
-- UTL_SMTP.WRITE_DATA(l_mail_conn, p_message); --内容UTL_SMTP.WRITE_DATA(l_mail_conn, utl_raw.cast_to_raw(convert(p_message,'gb2312')));UTL_SMTP.CLOSE_DATA(l_mail_conn);
UTL_SMTP.QUIT(l_mail_conn);
EXCEPTION
WHEN OTHERS THEN
UTL_SMTP.QUIT(l_mail_conn);
END;
参考以下:
http://otn.oracle.com/sample_code/tech/pl_sql/htdocs/Utl_Smtp_Sample.html