Gerade bin ich um Hilfe gebeten worden bzgl. E-Mailing...und gebe die Info hier gerne weiter.
Die Aufgabe:
Eine E-Mail an alle User/Nutzer einer Anwendung verschicken, die sich bei meinem Event angemeldet haben; sich also in einer DB Tabelle befinden. Ich habe soetwas mal für eine "
EVENT-Verwaltung" realisiert.
In der Oracle Datenbank existiert ja eine E-Mail-Engine mit der Utility
UTL_SMTP. Ferner enthält APEX die Funktion:
APEX_MAIL.
So kann ich mit APEX_MAIL die UTL_SMTP Funktion der DB nutzen.
Es existiert bei mir die Tabelle ANMELDUNGEN mit den Spalten ANREDE, TITEL,VORNAME, NACHNAME, EMAIL, EVENT, SHOW_NO_SHOW
1. Schritt:
Erstellung einer Seite ähnlich eines E-Mail Frontends:
2. Schritt - E-Mail Prozess erstellen:
begin
for c1 in (
select anmeldungen.ID,
anmeldungen.VORNAME as vorname,
anmeldungen.TITEL as titel,
anmeldungen.NACHNAME as name,
anmeldungen.EMAIL as email,
anmeldungen.ANREDE as anrede
from anmeldungen where SHOW_NO_SHOW ='angemeldet'
and EVENT =:P27_WORKSHOP
) loop
-- eMail
if c1.EMAIL is not null then
APEX_MAIL.SEND(
P_TO => c1.EMAIL,
P_CC => :P27_COPY,
P_BCC => :P27_COPY_BCC,
P_FROM => :P27_ERSTELLER,
P_BODY => 'Hallo'||' '||c1.ANREDE||' '||c1.TITEL||' '||c1.NAME||','||chr(10)||chr(10)||:P27_BODY,
-- P_BODY_HTML =>'Hallo'||c1.VORNAME||','||chr(10)||chr(10)||:P27_BODY,
P_SUBJ => :P27_SUBJECT);
end if;
end loop;
end;
Alle zu meinem Event angemeldeten User befinden sich in meiner Tabelle ANMELDUNGEN; ich möchte die E-Mail nun nur an Teilnehmer dieses Events versenden - so habe ich eine Selektliste :P27_WORKSHOP eingebaut und grenze darüber die Teilnehmer ein. Hinter der Selektliste befindet sich eine LOV auf meine Tabelle EVENTS
(LOV etwa: select EVENT_NAME d, EVENT_ID r from EVENTS).
Über den Button " E-Mail versenden" wird obiger Prozess ausgelöst.
Eigentlich fertig..
Optional: E-Mail Log
Um den Überblick zu behalten, wann ich welche Mails rausgeschickt habe, befülle ich die Tabelle ANMELDUNGEN_MAIL_LOG mittels des Prozesses "60 insert_into_mail_log":
Der Prozess wird ebenfalls über den Versenden Button ausgelöst:
Prozess "insert_into_mail_log":
insert into ANMELDUNGEN_MAIL_LOG (subject,datum,versender)
values (:P27_subject,SYSDATE,:P27_ERSTELLER);
Auf meiner Reportseite sieht es dann so aus:
Oben die Liste der erstellten"E-Mail-Templates" (die ich ja wiederverwenden kann...) und darunter das Mail Log.
Viel Spaß und Erfolg damit !