oracle新建账户不发邮件,ORACLE 中发送电子邮件的问题(在线等哦,急)

CREATE OR REPLACE PROCEDURE send_mail (

p_recipient IN   VARCHAR2,

p_message   IN   VARCHAR2,

p_subject   IN   VARCHAR2 default 'Oracle Perf Report '||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),

p_sender    IN   VARCHAR2 default 'tz_wlj@petrochina.com.cn')

IS

v_mailhost varchar2(30) := 'mail.xjyt.petrochina';  -- SMTP服务器地址

mail_conn utl_smtp.connection;

msg varchar2(4000);

p_user  varchar2(30) := 'tz_wlj';       -- 登录SMTP服务器的用户名

p_pass  varchar2(30) := 'tz_wlj';       -- 登录SMTP服务器的密码

BEGIN

/* 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行 */

msg := 'Date:' ||to_char(sysdate,'dd mon yy hh24:mi:ss') || utl_tcp.CRLF ||

'From: ' || p_sender || '' ||utl_tcp.CRLF ||

'To: '|| p_recipient || '' ||utl_tcp.CRLF||

'Subject

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库可以使用UTL_SMTP包电子邮件。UTL_SMTP是Oracle提供的一个包,可以通过SMTP协议电子邮件。下面是一个简单的例子,展示如何使用UTL_SMTP包在Oracle数据库中自动电子邮件。 假设你已经有了一个包含要电子邮件的收件人地址、主题和正文的表。以下是使用UTL_SMTP包电子邮件的步骤: 1. 首先,你需要在Oracle数据库中启用UTL_SMTP包。你可以使用以下命令启用UTL_SMTP包: ```sql EXECUTE UTL_MAIL.ENABLE; ``` 2. 接下来,你需要编写一个存储过程,该存储过程从包含电子邮件数据的表中选择数据,并使用UTL_SMTP包电子邮件。以下是一个例子: ```sql CREATE OR REPLACE PROCEDURE send_email AS -- 声明变量 v_mailhost VARCHAR2(255) := 'your_mail_host'; v_port NUMBER := 25; v_sender VARCHAR2(255) := 'sender_email'; v_username VARCHAR2(255) := 'sender_username'; v_password VARCHAR2(255) := 'sender_password'; v_recipient VARCHAR2(255); v_subject VARCHAR2(255); v_message VARCHAR2(4000); v_conn UTL_SMTP.CONNECTION; BEGIN -- 连接SMTP服务器 v_conn := UTL_SMTP.OPEN_CONNECTION(v_mailhost, v_port); UTL_SMTP.HELO(v_conn, v_mailhost); UTL_SMTP.AUTH(v_conn, v_username, v_password); -- 循环遍历邮件表中的每一行数据 FOR r_email IN (SELECT recipient, subject, message FROM email_table) LOOP -- 设置收件人地址、主题和正文 v_recipient := r_email.recipient; v_subject := r_email.subject; v_message := r_email.message; -- 电子邮件 UTL_SMTP.MAIL(v_conn, v_sender); UTL_SMTP.RCPT(v_conn, v_recipient); UTL_SMTP.DATA(v_conn, 'Subject: ' || v_subject || UTL_TCP.CRLF || 'To: ' || v_recipient || UTL_TCP.CRLF || 'From: ' || v_sender || UTL_TCP.CRLF || UTL_TCP.CRLF || v_message); END LOOP; -- 关闭连接 UTL_SMTP.QUIT(v_conn); EXCEPTION -- 处理异常 WHEN OTHERS THEN UTL_SMTP.CLOSE_CONNECTION(v_conn); RAISE; END; ``` 在上面的存储过程中,你需要将 `v_mailhost`、`v_port`、`v_sender`、`v_username` 和 `v_password` 替换为你自己的邮件服务器和件人信息。该存储过程从 `email_table` 表中选择数据,并将每个电子邮件给相应的收件人。 3. 最后,你可以使用以下命令调用存储过程并电子邮件: ```sql EXECUTE send_email; ``` 这将会 `email_table` 表中的所有电子邮件。你可以在表中添加或删除数据,以控制要电子邮件。 需要注意的是,为了使用UTL_SMTP包,你需要有相应的权限。另外,如果你的邮件服务器需要SSL或TLS连接,你需要使用UTL_SMTP包的SSL或TLS版本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值