You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 10g中使用UTL_SMTP向多个收件人批量发送邮件的方法

Oracle 10g UTL_SMTP 多收件人同邮件发送方案

首先明确一个常见误区:多次调用UTL_SMTP.rcpt 本身不会生成多封独立邮件,只要所有调用都在同一个SMTP会话的UTL_SMTP.mail(指定发件人)和UTL_SMTP.data(写入邮件内容)之间执行,最终只会生成一封邮件。

如果要让所有收件人互相可见对方的收件信息,只需要额外完成以下两步即可:

  • 第一步:把所有收件人地址用英文逗号拼接后,写入邮件头的To字段
  • 第二步:对每一个收件人地址,单独调用一次UTL_SMTP.rcpt 完成SMTP会话级的收件人注册

示例代码

DECLARE
  l_mail_conn  UTL_SMTP.connection;
  l_smtp_host  VARCHAR2(100) := '你的SMTP服务器地址';
  l_from       VARCHAR2(100) := 'sender@example.com';
  -- 多个收件人列表
  l_rcpt_list  DBMS_SQL.varchar2_table;
  l_to_header  VARCHAR2(1000);
BEGIN
  -- 初始化收件人列表
  l_rcpt_list(1) := 'user1@example.com';
  l_rcpt_list(2) := 'user2@example.com';
  l_rcpt_list(3) := 'user3@example.com';
  
  -- 拼接邮件头To字段,用于展示给所有收件人
  FOR i IN 1..l_rcpt_list.COUNT LOOP
    IF i > 1 THEN
      l_to_header := l_to_header || ', ';
    END IF;
    l_to_header := l_to_header || l_rcpt_list(i);
  END LOOP;

  -- 建立SMTP连接
  l_mail_conn := UTL_SMTP.open_connection(l_smtp_host, 25);
  UTL_SMTP.helo(l_mail_conn, l_smtp_host);
  UTL_SMTP.mail(l_mail_conn, l_from);

  -- 循环注册所有收件人,同一SMTP会话内多次调用不会生成多封邮件
  FOR i IN 1..l_rcpt_list.COUNT LOOP
    UTL_SMTP.rcpt(l_mail_conn, l_rcpt_list(i));
  END LOOP;

  -- 写入邮件内容,包含To头字段
  UTL_SMTP.open_data(l_mail_conn);
  UTL_SMTP.write_data(l_mail_conn, 'From: ' || l_from || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, 'To: ' || l_to_header || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, 'Subject: 测试多收件人邮件' || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, UTL_TCP.crlf); -- 空行分隔头和正文
  UTL_SMTP.write_data(l_mail_conn, '这是测试邮件正文' || UTL_TCP.crlf);
  UTL_SMTP.close_data(l_mail_conn);

  UTL_SMTP.quit(l_mail_conn);
END;
/

说明

  • Oracle 10g的UTL_SMTP包本身没有提供一次性传入多收件人的rcpt重载方法,循环调用是官方推荐的标准实现方式,不会产生多封独立邮件
  • 邮件头的To字段仅用于展示,和SMTP会话实际注册的收件人可以独立配置,如果要实现密送(收件人看不到其他收件人),只需要把对应地址从To头字段里移除,仅调用rcpt注册即可

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:51:02