Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Oracle, invio mail con caratteri speciali
lunedì 01 ottobre 2012 - 10.42
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 3.5
|
Oracle 10g
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
lun 1 ott 2012 - 10:42
Ciao tutti,
vorrei inviare una mail da pl/sql.
DECLARE
p_Address VARCHAR2(30) := '...';
p_Subject VARCHAR2(20) := 'Prova';
p_Message VARCHAR2(50) := 'Ciao, oggi è una bella giornata!';
v_CRLF VARCHAR2(10) := CHR(13) || CHR(10);
v_Mailhost VARCHAR2(30) := '...';
v_Sender VARCHAR2(30) := '...';
v_Username VARCHAR2(30) := '...';
v_Password VARCHAR2(30) := '...';
v_Port SMALLINT := 25;
v_Connection UTL_SMTP.CONNECTION;
BEGIN
v_Connection := UTL_SMTP.OPEN_CONNECTION(v_Mailhost, v_Port);
UTL_SMTP.COMMAND(v_Connection, 'AUTH LOGIN');
UTL_SMTP.COMMAND(v_Connection, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(v_Username))));
UTL_SMTP.COMMAND(v_Connection, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(v_Password))));
UTL_SMTP.MAIL(v_Connection, v_Sender);
UTL_SMTP.RCPT(v_Connection, p_Address);
UTL_SMTP.OPEN_DATA(v_Connection);
UTL_SMTP.WRITE_DATA(v_Connection, 'From: '|| v_Sender || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, 'Subject: '|| TRIM(p_Subject) || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, 'To: ' || p_Address || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, TRIM(p_Message) || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, v_CRLF);
UTL_SMTP.CLOSE_DATA(v_Connection);
UTL_SMTP.QUIT(v_Connection);
END;
/
Mi sono accorto però che con lo script precedente non gestisce le lettere accentate (immagino anche altri caratteri speciali). Manca qualcosa o sbaglio l'uso di UTL_SMTP?
Grazie per l'attenzione,
Davide
Aggiornamento:
ho risolto poi nel seguente modo ...
v_Connection := UTL_SMTP.OPEN_CONNECTION(v_Mailhost, v_Port);
UTL_SMTP.COMMAND(v_Connection, 'AUTH LOGIN');
UTL_SMTP.COMMAND(v_Connection, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(v_Username))));
UTL_SMTP.COMMAND(v_Connection, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(v_Password))));
UTL_SMTP.MAIL(v_Connection, v_Sender);
UTL_SMTP.RCPT(v_Connection, p_Address);
UTL_SMTP.OPEN_DATA(v_Connection);
UTL_SMTP.WRITE_DATA(v_Connection, 'From: '|| v_Sender || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, 'To: ' || p_Address || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, 'Subject: =?ISO-8859-15?Q?' || UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(TRIM(p_Subject)))) || '?=' || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, 'MIME-version: 1.0' || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, 'Content-Type: text/html;"charset=ISO-8859-15"' || v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, 'Content-Transfer-Encoding: quoted-printable '|| v_CRLF);
UTL_SMTP.WRITE_DATA(v_Connection, v_CRLF);
UTL_SMTP.WRITE_RAW_DATA(v_Connection, UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(REPLACE(REPLACE(TRIM(p_Message), v_CRLF, '<br />'), CHR(10), '<br />'))));
UTL_SMTP.CLOSE_DATA(v_Connection);
UTL_SMTP.QUIT(v_Connection);
Su Oracle 10.2 funziona, non so dirvi su altre versioni.
Ciao!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !