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 :

Problème avec les lettre accentuées lors de l'envoit d'email


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 55
    Points : 61
    Points
    61
    Par défaut Problème avec les lettre accentuées lors de l'envoit d'email
    Bonjour,

    j'ai cré une procédure permettant l'envoi d'email.
    Lorsque je l'ai tester je me suis aperçu que je n'avait pas les caractères accentués . (il transforme un é en e ,à en a,.....)

    paramètre du sgbd :
    * NLS_CHARACTERSET : WE8ISO8859P1
    * NLS_LANGUAGE : ENGLISH
    * NLS_NCHAR_CHARACTERSET : AL16UTF16

    Base : Oracle9i Enterprise Edition Release 9.0.1.3.0 - 64bit Production

    merci bcps.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    language = english pas d'accent

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 55
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    même en changant le language, cela ne fonctionne tj pas.
    Voici la procédure (je ne pense pas que c'est du à celle-ci mais on ne sais jamais):

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    PROCEDURE Sending_Mail
       (
          p_email    in varchar2,
          p_subject  in varchar2,
          p_body     in varchar2,
          p_sender  in varchar2 default null
       )
       IS
     
          PROCEDURE send_header
         (
              name   IN VARCHAR2,
              header IN VARCHAR2
          )
          AS
          BEGIN
             utl_smtp.write_data(v_conn, name || ': ' || header || utl_tcp.crlf);
         END;
     
       BEGIN
     
             dbms_session.set_nls('NLS_LANGUAGE','FRENCH');   		 
             v_conn := utl_smtp.open_connection(v_srchost,25);
             utl_smtp.helo(v_conn, v_srcdomain);
             utl_smtp.mail(v_conn, v_srcname||'@'||v_srcdomain);
             utl_smtp.rcpt(v_conn, p_email);
     
             IF p_sender IS NOT NULL
             THEN
                    utl_smtp.rcpt(v_conn, p_sender); -- les copies 
             END IF;
     
             utl_smtp.open_data(v_conn);
             send_header('From',    '"Eurtransbel Application" <'||v_srcname||'@'||v_srcdomain||'>');
             send_header('To',      '"'||p_email||'" <'||p_email||'>');
     
             IF p_sender IS NOT NULL
             THEN
                send_header('Cc',   '"'||p_sender||'" <'||p_sender||'>');
             END IF;
     
             send_header('Subject', p_subject);
             utl_smtp.write_data(v_conn, utl_tcp.CRLF || p_body);
             utl_smtp.close_data(v_conn);
             utl_smtp.quit(v_conn);
     
       EXCEPTION
       WHEN utl_smtp.transient_error OR utl_smtp.permanent_error
       THEN
          utl_smtp.quit(v_conn);  
          raise_application_error(-20000,
             'Failed to send mail due to the following error: ' || sqlerrm);
     
       END Sending_Mail;
    Voici les param:
    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
     
    SELECT * FROM nls_database_parameters
    PARAMETER                      VALUE                                   
    ------------------------------ ----------------------------------------
    NLS_LANGUAGE                   AMERICAN                                
    NLS_TERRITORY                  AMERICA                                 
    NLS_CURRENCY                   $                                       
    NLS_ISO_CURRENCY               AMERICA                                 
    NLS_NUMERIC_CHARACTERS         .,                                      
    NLS_CHARACTERSET               WE8ISO8859P1                            
    NLS_CALENDAR                   GREGORIAN                               
    NLS_DATE_FORMAT                DD-MON-RR                               
    NLS_DATE_LANGUAGE              AMERICAN                                
    NLS_SORT                       BINARY                                  
    NLS_TIME_FORMAT                HH.MI.SSXFF AM                          
    NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM                
    NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZH:TZM                  
    NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZH:TZM        
    NLS_DUAL_CURRENCY              $                                       
    NLS_COMP                       BINARY                                  
    NLS_NCHAR_CHARACTERSET         AL16UTF16                               
    NLS_SAVED_NCHAR_CS             WE8ISO8859P1                            
    NLS_TIME_FORMAT                HH.MI.SSXFF AM                          
    NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM                
    NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZH:TZM                  
    NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZH:TZM        
    NLS_LENGTH_SEMANTICS           BYTE                                    
    NLS_NCHAR_CONV_EXCP            FALSE                                   
    NLS_RDBMS_VERSION              9.0.1.3.0
    Lorsque je test par exemple avec la chaine suivantes comme contenu du mail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    & é @ " # '' ( § ^ è ! ç { à } ) ° ¨ ^ [ $ * ] ù % ´ µ ` £ = + ~
    J'obtient le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    & e @ " # ' ( ? ^ e ! c { a } ) ? ? ^ [ $ * ] u % ' ? ` # = + ~
    merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 55
    Points : 61
    Points
    61
    Par défaut
    Petite précision suplémentaire,
    cette base oracle tourne sur un environement AIX 4.3.

    Serait-il possible que il y ai une mauvaise conversion entre le système et la base car lorsque je liste les caractères de la base j'obtient ce-ci :

    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
     033:!  034:"  035:#  036:$  037:%  038:&  039:'  040:(
     041:)  042:*  043:+  044:,  045:-  046:.  047:/  048:0 
     049:1  050:2  051:3  052:4  053:5  054:6  055:7  056:8 
     057:9  058::  059:;  060:<  061:=  062:>  063:?  064:@ 
     065:A  066:B  067:C  068:D  069:E  070:F  071:G  072:H 
     073:I  074:J  075:K  076:L  077:M  078:N  079:O  080:P 
     081:Q  082:R  083:S  084:T  085:U  086:V  087:W  088:X 
     089:Y  090:Z  091:[  092:\  093:]  094:^  095:_  096:` 
     097:a  098:b  099:c  100:d  101:e  102:f  103:g  104:h 
     105:i  106:j  107:k  108:l  109:m  110:n  111:o  112:p 
     113:q  114:r  115:s  116:t  117:u  118:v  119:w  120:x 
     121:y  122:z  123:{  124:|  125:}  126:~  127:  128:€ 
     129:  130:‚  131:ƒ  132:„  133:…  134:†  135:‡  136:ˆ 
     137:‰  138:Š  139:‹  140:Œ  141:  142:Ž  143:  144: 
     145:‘  146:’  147:“  148:”  149:•  150:–  151:—  152:˜ 
     153:™  154:š  155:›  156:œ  157:  158:ž  159:Ÿ  160:  
     161:¡  162:¢  163:£  164:¤  165:¥  166:¦  167:§  168:¨ 
     169:©  170:ª  171:«  172:¬  173:­  174:®  175:¯  176:° 
     177:±  178:²  179:³  180:´  181:µ  182:¶  183:·  184:¸ 
     185:¹  186:º  187:»  188:¼  189:½  190:¾  191:¿  192:À 
     193:Á  194:Â  195:Ã  196:Ä  197:Å  198:Æ  199:Ç  200:È 
     201:É  202:Ê  203:Ë  204:Ì  205:Í  206:Î  207:Ï  208:Ð 
     209:Ñ  210:Ò  211:Ó  212:Ô  213:Õ  214:Ö  215:×  216:Ø 
     217:Ù  218:Ú  219:Û  220:Ü  221:Ý  222:Þ  223:ß  224:à 
     225:á  226:â  227:ã  228:ä  229:å  230:æ  231:ç  232:è 
     233:é  234:ê  235:ë  236:ì  237:í  238:î  239:ï  240:ð 
     241:ñ  242:ò  243:ó  244:ô  245:õ  246:ö  247:÷  248:ø 
     249:ù  250:ú  251:û  252:ü  253:ý  254:þ  255:ÿ  256:
    Et là, les accents sont bien présents ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 55
    Points : 61
    Points
    61
    Par défaut
    Bon voila, problème résolut.
    Pour ceux que ca intéresse voici la soluce.

    il suffisait d'ajouter les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    utl_smtp.write_data(v_conn, 'MIME-version: 1.0' || utl_tcp.CRLF);
    utl_smtp.write_data(v_conn, 'Content-Type: text/plain; charset=WE8ISO8859P1'||utl_tcp.CRLF);
    utl_smtp.write_data(v_conn, 'Content-Transfer-Encoding: 8bit' ||utl_tcp.CRLF);
    utl_smtp.write_raw_data(v_conn,utl_raw.cast_to_raw(utl_tcp.CRLF || p_body));
    Ce qui permet d'envoyer les caractères sur 8-bits car les protocole SMTP utilise 7-bits pour ses caractères (par défaut).

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

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

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    J'ai exactement le meme problème mais ce n'est pas encore résolu pour moi ...

    En effet, au lieu du Charset WE8ISO8859P1, nous utilisons UTF-8.
    Voici mon header (en plus des Subject et autres) de mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MIME-Version: 1.0
    Content-Type: text/html; charset="UTF-8"
    Content-Transfer-Encoding: 8bit
    Dois-je faire autre chose encore?

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

Discussions similaires

  1. [JDOM] Problème avec les accents français lors de création de fichier Xml
    Par jean1979 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/01/2012, 10h08
  2. problème avec les caractère accentué
    Par tarfoul dans le forum ASP.NET
    Réponses: 0
    Dernier message: 15/02/2011, 17h59
  3. Problème avec les lettres cyrillic
    Par rahmoucha dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 03/12/2010, 11h40
  4. Réponses: 0
    Dernier message: 25/01/2008, 09h36
  5. Réponses: 1
    Dernier message: 09/08/2006, 17h05

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