如何将消息发送给多个收件人
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);
【讨论】:
以上是关于如何将消息发送给多个收件人的主要内容,如果未能解决你的问题,请参考以下文章