使用Oracle的PL/SQL发送Email

本文介绍了一种利用Oracle PL/SQL过程实现电子邮件发送的方法。该过程通过指定SMTP服务器、发件人、收件人、邮件主题及正文等参数来完成邮件发送任务,并提供了额外的参数用于设置发件人名称、收件人名称和邮件内容类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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 VARCHAR2IS
  
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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值