Wie Sie E-Mails in Oracle PL/SQL-Paket an mehrere Empfänger?
Wie E-Mails in Oracle PL/SQL-Paket an mehrere Empfänger? Ich habe unter pl/sql-Prozedur in einer oracle-Paket, es funktioniert nur für einen Empfänger. Ich brauche, um es zu verbessern, funktionell, lassen Sie Sie senden können E-Mail an mehrere Empfänger zur gleichen Zeit wie "Zu: David Festool; Peter Makita; John Dewalt". Jede Stelle kann mir helfen wird großartig sein, zu schätzen wissen! Bitte geben Sie mir geänderten code.
procedure email(p_recip in varchar2,
p_subject in varchar2,
p_message in varchar2) is
c utl_smtp.connection;
msg varchar2(4000);
procedure send_header(name in varchar2, header in varchar2) as
begin
utl_smtp.write_data(c, name || ': ' || header || utl_tcp.crlf);
end;
begin
--Open SMTP connection
c := utl_smtp.open_connection('ExchangeServerName');
-- Write SMTP header
utl_smtp.helo(c, 'ExchangeServerName');
utl_smtp.mail(c, '[email protected]');
utl_smtp.rcpt(c, p_recip);
utl_smtp.open_data(c);
send_header('From', '"Title" <[email protected]');
send_header('To', p_recip);
send_header('Subject', p_subject);
send_header('Mime-Version', '1.0');
send_header('Content-Type', 'multipart/mixed; boundary="DMW.Boundary.605592468"');
-- Write MIME boundary line for the message body
msg := utl_tcp.crlf || '--DMW.Boundary.605592468' || utl_tcp.crlf ||
'Content-Type: text/plain' || utl_tcp.crlf ||
'Content-Transfer-Encoding: 7bit' || utl_tcp.crlf ||
utl_tcp.crlf;
utl_smtp.write_data(c, msg);
-- Write message body
utl_smtp.write_data(c, p_message || utl_tcp.crlf);
-- Clean up
utl_smtp.close_data(c);
utl_smtp.quit(c);
exception
when utl_smtp.transient_error or utl_smtp.permanent_error then
begin
utl_smtp.quit(c);
exception
when utl_smtp.transient_error or utl_smtp.permanent_error then
null;
-- When the SMTP server is down or unavailable, we don't have
-- a connection to the server. The QUIT call will raise an
-- exception that we can ignore.
end;
raise_application_error(-20000, 'Failed to send mail due to the following error: ' ||
sqlerrm);
end;
--------------------------------------------------------------
Können Sie UTL_MAIL.SENDEN statt? Dann verwenden Sie eine durch Kommas getrennte Liste für die Empfänger.
InformationsquelleAutor Deep in Development | 2013-07-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie rufen Sie
utl_smtp.rcpt
mehrfach, einmal für jeden Empfänger; Sie können nicht geben, eine Liste von Werten in einem Aufruf.Aus der UTL_SMTP.RCPT-Dokumentation:
Dass heißt, Sie können nicht wirklich übergeben Sie eine Zeichenfolge von Namen, es sei denn, du bist glücklich, analysieren Sie die einzelnen Adressen aus, es wäre einfacher, übergeben Sie ein array von Werten, wahrscheinlich.
Den
TO
header ist eine andere Frage; wenn ich mich Recht erinnere, ist das wirklich nur für die Anzeige, und nachdem eine Adresse alsrcpt
aber nicht in derTO
(oderCC
) - header ist wie BCC umgesetzt wird. Citation needed obwohl...Hier ist ein Alter AskTom Artikel demonstriert dies. jonearles Vorschlag, UTL_MAIL sollte untersucht werden, obwohl.
BCC
Umsetzung - rufen Sie einfachRCPT
und nicht im Header der Nachricht.InformationsquelleAutor Alex Poole
Das format ist:
Den recipientlist, cc -, und bcc-Parameter werden alle durch Komma-getrennte Liste von Empfänger -, Kopie-und Blindkopie e-mail-Adressen.
Den Absender, den Betreff, die Nachricht und die mime_type Parameter sind alle einzelne Elemente von Feldern.
InformationsquelleAutor UTL_MAIL
Führen Sie einfach den unten Verfahren mit Wechsel-code:
Ausführen:
Prozedur-Code:
Dies ist in Ordnung für mich
InformationsquelleAutor Shahidul Islam Molla