如何将消息发送给多个收件人

Posted

技术标签:

【中文标题】如何将消息发送给多个收件人【英文标题】:How to send a message to multiple recipients 【发布时间】:2021-09-17 08:43:01 【问题描述】:

我尝试通过使用向单个收件人发送消息

UTL_SMTP.rcpt(l_mail_conn, p_to);

其中 p_to 只能包含一个电子邮件地址。为了向多个收件人发送消息,唯一的可能性(据我所知)是多次调用此例程,但是是否有另一种方法可以一次将相同的消息发送给多个收件人,以允许每个收件人看看其他人而不是多封电子邮件?

Oracle 版本 10g

谢谢

标记

【问题讨论】:

Related question? "call this routine multiple times" 是指多次调用utl_smtp.rcpt,而不是整个电子邮件发送例程。 utl_mail.send 接受以逗号分隔的收件人列表。不过默认情况下它没有安装,它还有一两个其他限制。 【参考方案1】:

据我所知,这是一个接一个。但是,您不必发送“n”封邮件,只需根据需要多次拨打UTL_SMPT.RCPT

例如,在我的过程中,我为 To、Cc 和 Bcc 传递单独的参数,然后将它们连接成一个局部变量(它们应该用分号分隔):

l_recipients :=
        par_to
     || CASE WHEN par_cc IS NOT NULL THEN ';' || par_cc END
     || CASE WHEN par_bcc IS NOT NULL THEN ';' || par_bcc END;

然后 - 在一个循环中 - 为每个收件人调用 RCPT 过程:

  FOR cur_r IN (    SELECT REGEXP_SUBSTR (l_recipients,
                                          '[^;]+',
                                          1,
                                          LEVEL) recipient
                      FROM DUAL
                CONNECT BY LEVEL <= REGEXP_COUNT (l_recipients, ';') + 1)
  LOOP
     UTL_SMTP.rcpt (l_smtp_connection, cur_r.recipient);
  END LOOP;

(请注意,这是 11g 示例;10g - 您使用 - 没有 REGEXP_COUNT 功能,但这不是这里的主要问题)。

后来,我只是谁是谁

  -- From / To / Cc / Bcc
  UTL_SMTP.write_data (l_smtp_connection,
                       'From: ' || par_sender || UTL_TCP.crlf);

  UTL_SMTP.write_data (l_smtp_connection,
                       'To: '   || par_to     || UTL_TCP.crlf);
  UTL_SMTP.write_data (l_smtp_connection,
                       'Cc: '   || par_cc     || UTL_TCP.crlf);
  UTL_SMTP.write_data (l_smtp_connection,
                       'BCc: '  || par_bcc    || UTL_TCP.crlf);

【讨论】:

以上是关于如何将消息发送给多个收件人的主要内容,如果未能解决你的问题,请参考以下文章

使用 Facebook API 向多个收件人发送消息

如何将电子邮件发送给多个收件人? [复制]

将多个收件人电子邮件和姓名附加到 EmailMultiAlternatives

如何使用 xmpphp 发送多条消息

Openfire 将消息退回给发件人

如何将消息发送给除 rails/actioncable 中的发件人之外的所有客户端?