在 oracle 10g 中发送电子邮件
Posted
技术标签:
【中文标题】在 oracle 10g 中发送电子邮件【英文标题】:Send email in oracle 10g 【发布时间】:2012-11-06 05:05:47 【问题描述】:您好,我有 2 个表格,它们的输出如下
table1:
userID Email address
Rakesh rakesh.k@xyz.com
hari hari.m@xyz.com
abc abc@xyz.com
table2:
subject1
subject2
subject3
我想要一个查询从 abc(我以 abc 登录我的网站)发送一封电子邮件到 Rakesh 或 hari(基于我从 jsp 中的选择),主题是表 2 中的任何一个,并且应该附加字符串“重新分配”
请帮我坦克
【问题讨论】:
您想从数据库或 JSP 发送电子邮件? 我想从 jsp 发送一封电子邮件,地址取自数据库 您可以使用 Javamail API 从 JSP 发送电子邮件。最好使用 Java 类发送电子邮件并从 JS 中使用该类,这样您就可以重新使用该类从应用程序发送电子邮件。或者调用用于发送电子邮件的数据库过程,并从 JSP/Java 调用它。在 JSP 中发送电子邮件代码一点都不好。 【参考方案1】:要从数据库发送电子邮件,您需要有一个使用UTIL_SMTP
或其他电子邮件协议的程序。对于UTIL_SMTP
,创建如下过程
create or replace PROCEDURE send_mail (P_SENDER in varchar2,
P_RECIPIENT in varchar2,
P_CC in varchar2,
P_SUBJECT in varchar2,
P_MESSAGE in varchar2) is
mailhost varchar2(30) := 'xxx.xxx.xx.xx';
mail_conn utl_smtp.connection;
crlf varchar2(2) := CHR(13)||CHR(10);
mesg varchar2(4000);
BEGIN
mail_conn := utl_smtp.open_connection(mailhost,25);
mesg := 'Date: '||to_char(sysdate,'dd Mon yy hh24:mi:ss' )||crlf||
'FROM: '||P_SENDER||'>'||crlf||'Subject: '||P_SUBJECT||crlf||
'To: '||P_RECIPIENT||crlf||
'Cc: '||P_CC||crlf||crlf||P_MESSAGE;
utl_smtp.helo(mail_conn,mailhost);
utl_smtp.mail(mail_conn,P_SENDER);
utl_smtp.rcpt(mail_conn,P_RECIPIENT);
utl_smtp.rcpt(mail_conn,P_CC);
utl_smtp.data(mail_conn,mesg);
utl_smtp.quit(mail_conn);
END send_mail;
/
您可以从系统管理员处获得SMTP_HOST
和SMTP_PORT
。 SMTP_PORT 默认为 25。一旦你有了,你可以执行你的过程作为
exec send_mail('abc@xyz.com',
'rakesh.k@xyz.com',
'hari.k@xyz.com',
'<Your subject>',
'<Your message>');
如果你想调用你的过程从 JSP 发送电子邮件,你可以调用这个过程并将参数从 JSP 传递给你的过程。如果您想使用 select 语句发送电子邮件,请将您的过程包装在一个函数中并将函数执行为
select <yourfunction(params)> from dual
【讨论】:
我们不必争论 SMTP。自 Oracle 10g 以来,Oracle 提供了更好的电子邮件 API,UTL_MAIL
。 Find out more.以上是关于在 oracle 10g 中发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章