geschrieben von:
Guenger (---.dip0.t-ipconnect.de)
So jetzt hab ichs endlich hingekriegt mails als html zu schicken. Und die deutschen Umlaute habe ich Dank Carstens Replace-Funktion auch einfügen können.
Die Sache mit dem 'write_raw_data' war doch nicht so das gelbe vom Ei.
Danke nochmals!
DECLARE
c utl_smtp.connection;
klassifikation varchar2(4000);
message_temp RAW(32767);
nachricht varchar2(4000);
pMessage VARCHAR2(2000);
hyperlink varchar2(200);
PROCEDURE send_header(name IN VARCHAR2, header IN VARCHAR2) AS
BEGIN
utl_smtp.write_data(c, name || ': ' || header || utl_tcp.CRLF);
END;
BEGIN
pMessage:= 'Es wurde ein neues Ticket erfasst!';
hyperlink:= '[
test.de];;
select BEZEICHNUNG into klassifikation from apx_ticket_klassifikation where id = :P6_KLASSIFIKATION;
c := utl_smtp.open_connection('test_server');
utl_smtp.helo(c, 'test.de');
utl_smtp.mail(c, 'admin@test.de');
utl_smtp.rcpt(c, :P6_E_MAIL_ADRESSE);
utl_smtp.open_data(c);
utl_smtp.write_data(c, 'MIME-version: 1.0' || utl_tcp.CRLF);
utl_smtp.write_data(c, 'Content-Type: text/html; charset=ISO-8859-15'
||utl_tcp.CRLF);
utl_smtp.write_data(c, 'Content-Transfer-Encoding: 8bit' ||utl_tcp.CRLF);
utl_smtp.write_data(c, 'From: ticket@test.de'||utl_tcp.CRLF);
utl_smtp.write_data(c, 'To: <'|| :P6_E_MAIL_ADRESSE ||'>'
||utl_tcp.CRLF);
utl_smtp.write_data(c, 'Subject: Ticket: '|| klassifikation || ' ( ' || :P6_PRIORITAETEN || ' ) ' || utl_tcp.CRLF);
utl_smtp.write_data(c, utl_tcp.CRLF);
nachricht:= '<HTML><BODY BGCOLOR=#FFFFFF>'||pMessage||'</br></br>
QUELLE ODER PERSON: ' || CONVERT_FOR_HTML(:P6_QUELLE) || '</br>
DATUM: ' || :P6_DATUM || '</br>
KLASSIFIKATION: ' || klassifikation || '</br>
PRIORITÄT: ' || CONVERT_FOR_HTML(:P6_PRIORITAETEN) || '</br>
KURZBESCHREIBUNG: ' || CONVERT_FOR_HTML(:P6_KURZBESCHREIBUNG) || '</br>
BESCHREIBUNG DES KUNDEN: ' || CONVERT_FOR_HTML(:P6_BESCHREIBUNG) || '</br></br>
<a href="[
test.de];|| hyperlink || ' </a>
</br>
</BODY></HTML>';
utl_smtp.write_data(c, nachricht);
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;
END;
raise_application_error(-20000,
'Failed to send mail due to the following error: ' || sqlerrm);
END;