IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Procédure UTL_SMTP et caractéres accentués


Sujet :

Oracle

  1. #1
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Points : 741
    Points
    741
    Billets dans le blog
    1
    Par défaut Procédure UTL_SMTP et caractéres accentués
    Bonjour ,

    Je n' arrive pas à envoyer des caractéres accentués ( é,€,..)
    via la procédure send_mail ci-jointe ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    CREATE OR REPLACE procedure send_mail( 
    p_exp IN OUT varchar2, 
    p_dest IN OUT varchar2, 
    p_obj IN OUT varchar2, 
    p_msg IN OUT varchar2) 
    is 
    v_cnx utl_smtp.connection; 
    v_smtp_srv varchar2(200):='172.18.0.2'; 
    v_port pls_integer:=25; 
    v_msg varchar2(2000); 
    BEGIN 
    v_cnx:=utl_smtp.open_connection(v_smtp_srv,v_port); 
    utl_smtp.HELO(v_cnx,v_smtp_srv); 
    utl_smtp.MAIL(v_cnx,p_exp); 
    utl_smtp.RCPT(v_cnx,p_dest); 
    v_msg:='date:'||TO_CHAR(sysdate,'dd mon yyyy hh24:mi:ss')||utl_tcp.CRLF|| 
    'from:'||p_exp||utl_tcp.CRLF|| 
    'subject:'||p_obj||utl_tcp.CRLF|| 
    'to:'||p_dest||utl_tcp.CRLF|| 
    ''||utl_tcp.CRLF|| 
    p_msg||utl_tcp.CRLF||''; 
     
    utl_smtp.data(v_cnx,v_msg); 
    utl_smtp.quit(v_cnx); 
     
    EXCEPTION 
    WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN 
      utl_smtp.quit(v_cnx); 
      raise_application_error(-20000,'Erreur send_mail:'||sqlerrm); 
     END; 
    /
    il semblerait que la procédure utl_smtp ne gére que l' ascii standard .

    Est-ce que l' un d' entre vous a réussi à envoyer des caractéres accentués
    via cette procédure ?

    cordialement

  2. #2
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Points : 741
    Points
    741
    Billets dans le blog
    1
    Par défaut
    Bonjour ,

    J' ai résolu mon souci ,
    pour outrepasser cette limite d' oracle 8.1.7, on doit utiliser la fonction
    write_raw_data ( cf doc oracle 8i supplied pl/sql packages) de cette façon :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    CREATE OR REPLACE procedure send_mail_2( 
    p_exp IN OUT varchar2, 
    p_dest IN OUT varchar2, 
    p_obj IN OUT varchar2, 
    p_msg IN OUT varchar2) 
    is 
    v_cnx utl_smtp.connection; 
    v_smtp_srv varchar2(200):='172.18.0.2'; 
    v_port pls_integer:=25; 
    v_msg varchar2(2000); 
    BEGIN 
    v_cnx:=utl_smtp.open_connection(v_smtp_srv,v_port); 
    utl_smtp.HELO(v_cnx,v_smtp_srv); 
    utl_smtp.MAIL(v_cnx,p_exp); 
    utl_smtp.RCPT(v_cnx,p_dest); 
    v_msg:='date:'||TO_CHAR(sysdate,'dd mon yyyy hh24:mi:ss')||utl_tcp.CRLF|| 
    'from:'||p_exp||utl_tcp.CRLF|| 
    'subject:'||p_obj||utl_tcp.CRLF|| 
    'to:'||p_dest||utl_tcp.CRLF|| 
    ''||utl_tcp.CRLF|| '';
     
    utl_smtp.open_data(v_cnx);
    utl_smtp.write_data(v_cnx,v_msg);
    utl_smtp.write_data(v_cnx, utl_tcp.crlf); 
     
    utl_smtp.write_raw_data(v_cnx,utl_raw.cast_to_raw('essai caractère accentué €'));
    utl_smtp.close_data(v_cnx); 
     
    utl_smtp.quit(v_cnx); 
     
    EXCEPTION 
    WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN 
      utl_smtp.quit(v_cnx); 
      raise_application_error(-20000,'Erreur send_mail:'||sqlerrm); 
     END; 
    /
    cdlt

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Caractères accentués avec <html:link>
    Par papysam dans le forum Struts 1
    Réponses: 5
    Dernier message: 25/05/2007, 15h18
  2. Chaines avec caractères accentués dans interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2004, 17h12
  3. Chaînes avec des caractères accentués dans Interbase
    Par François Marliac dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39
  4. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30
  5. insérer des caractères accentués INFORMIX/JDBC
    Par donde dans le forum Informix
    Réponses: 2
    Dernier message: 19/11/2002, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo