15. April 2013

PL/SQL Email Client Package: Version 1.0 verfügbar

PL/SQL Email Client package: version 1.0 is available
Nach einer sehr langen Zeit (um genau zu sein: nach 2 1/2 Jahren), konnte ich endlich eine neue Version meines Projektes PL/SQL Email Client online stellen. Neu in Version 1.0 sind
  • Eine GET_RECEIVEDATE -Funktion, die den Zeitstempel, zu dem die Mail empfangen wurde, zurückgibt (nicht das Sendedatum)
  • Das Package MAIL_FILTER zum Setzen von Suchfiltern auf dem Mailserver. Damit ruft das Package nicht mehr zwingend alle Emails aus einem Folder ab, sondern nur die, die den gesetzten Filterkriterien genügen. Das Filtern wird vom Mailserver gemacht; nicht von der Datenbank.
  • Und schließlich sind noch einige interne Optimierungen enthalten: So instanziiert der Java-Code nun weniger interne Objekte.
Am besten gleich mal ausprobieren - und so ruft Ihr mit PL/SQL alle ungelesenen Emails aus eurem Postfach ab.
begin
  mail_client.connect_server(
    p_hostname => 'mailserver.mycompany.de',
    p_port     => '993',
    p_protocol => mail_client.protocol_imap,
    p_userid   => '****',
    p_passwd   => '****',
    p_ssl => true
  );
  mail_client.open_inbox;
  mail_filter.clear_filters;
  mail_filter.add_seen_filter(false);
end;
/

PL/SQL procedure successfully completed.

select msg_number, subject, sender, sent_date, message_size from table(mail_client.get_mail_headers_p())e ;

MSG_NUMBER
----------
SUBJECT
--------------------------------------------------------------------------------
SENDER
--------------------------------------------------------------------------------
SENT_DATE           MESSAGE_SIZE
------------------- ------------
         6
Testmail
Carsten Czarski
15.04.2013 14:09:31         6790

begin
  mail_client.close_folder;
  mail_client.disconnect_server;
end;
/

1 row selected.

PL/SQL procedure successfully completed.
Den ersten "Feature-Request" für Version 1.1 habe ich schon - es wird also nicht mehr 2 1/2 Jahre dauern.
Eines noch: Ich bekomme immer wieder Emails, die mir zeigen, dass dieses Package tatsächlich verwendet wird. Das würde ich gerne mal sammeln. Also: Wenn jemand das Package MAIL_CLIENT (produktiv) nutzt und dazu ein wenig als Kommentar zu diesem Posting schreibt, freue ich sehr mich darüber ... und vielen Dank schon mal im voraus.
After a long period of time (2 and a haf years, to be exact), I finally managed to release version 1.0 of my PL/SQL Email Client project. And these are the new features.
  • The GET_RECEIVEDATE function returns the timestamp at which the message has been received (not sent).
  • The MAIL_FILTER package allows to set server-side filters. The package will then retrieve not necessarily all emails from within a folder, but only these which suffice the filter set by the programmer. Filtering is done by the email server.
  • Beyond this, I did some internal optimizations: The java code now instantiates less objects.
So ... just try it out: The following SQL script retrieves all unread messages from your Inbox folder. You just need to replace the connection details for your mail server - and make sure that your database is able to reach the mail server via the network.
begin
  mail_client.connect_server(
    p_hostname => 'mailserver.mycompany.de',
    p_port     => '993',
    p_protocol => mail_client.protocol_imap,
    p_userid   => '****',
    p_passwd   => '****',
    p_ssl => true
  );
  mail_client.open_inbox;
  mail_filter.clear_filters;
  mail_filter.add_seen_filter(false);
end;
/

PL/SQL procedure successfully completed.

select msg_number, subject, sender, sent_date, message_size from table(mail_client.get_mail_headers_p())e ;

MSG_NUMBER
----------
SUBJECT
--------------------------------------------------------------------------------
SENDER
--------------------------------------------------------------------------------
SENT_DATE           MESSAGE_SIZE
------------------- ------------
         6
Testmail
Carsten Czarski
15.04.2013 14:09:31         6790

1 row selected.

begin
  mail_client.close_folder;
  mail_client.disconnect_server;
end;
/

PL/SQL procedure successfully completed.
I already have the next "feature request" - but the next version will be there sooner than 2 1/2 years ...
One more thing: In the past, I got some emails telling me about the usage of the mail client package or asking some questions. I'd like to collect this information here: So ... if you are using the MAIL_CLIENT package (in production?) and don't mind, I'd be very happy if you wrote a few words as a commect to this blog posting - thanks in advance.

Kommentare:

Anonym hat gesagt…

Hallo Carsten,

gerne möchte ich deinem Wunsch nachkommen vom produktiven Einsatz des Packages zu berichten.

Seit der ersten Version des Packages hat mein Kollege dies in unserem Apex-Projekt genutzt um Email-Protokolle auszuwerten.

Wir bekommen an unser Postfach vom RZ täglich Email-Logs als Mailanhang zugestellt die ausgewertet werden.

In unserer aktuellen Programmversion wird auf Basis dieser Protokolle eine Bounce-Verarbeitung durchgeführt, so dass Mails die nicht zugestellt werden konnten noch mal als Pdf erzeugt werden, um diese per Briefpost zu verschicken.

In seltenen Fällen kommt es vor, das ein Anhang in der Mail nicht vollständig ist und wir die Protokolle "zu Fuß" laden müssen.

Das Email Client Package ist eine wichtige Komponente unseres Systems, mit dem wir zur Zeit ca. 10.000 Dokumente pro Monat erzeugen.

MfG

Oliver

Anonym hat gesagt…

Hallo Herr Czarski,

auch ich verwende das mail_client Package in meiner Applikation mit großer Freude. Angebote die an unsere Kunden als Email PDF Attachment verschickt werden, bekommt die Datenbank auch per BCC. Alle 5 Minuten holt Ihr geniales Package die Emails ab und sortiert diese als BLOB zum Kundendatensatz ein. Für die Mitarbeiter wenig Arbeit, aber sehr sehr praktisch. Vielen Dank für Ihre Arbeit.

Marco Patzwahl
MuniQSoft GmbH

Beliebte Postings