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

Servlets/JSP Java Discussion :

encodage UTF-8 d'un mail


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4
    Par défaut encodage UTF-8 d'un mail
    Bonjour,

    J'utilise une classe que j'ai récupéré pour l'envoie des mails à partir d'un site en jsp sur lequel je travaille.

    L'envoie se déroule bien mais on dirait qu'au niveau du type de contenu quand je spécifie l'utf-8 n'est pas pris en compte. Mes caractères grec ou bulgare ne sont pas pris en compte.

    Voilà le code de la classe :


    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    package mail;
    
    
    import java.io.*;
     import java.net.Socket;
     import java.util.Date;
     import java.util.StringTokenizer;
     
    
    
     public class MailIo {
    
     public MailIo() {
    
     }
    
     public static boolean sendMail(Socket sock, String localHost,
     String Destinataire, String from, String subject, String message)
     throws IOException {
    
     //connection a la socket passe par param
     out = new PrintWriter(sock.getOutputStream());
    
     in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
     //on recoi la ligne qui nous dit que l'on est connecté
     receive();
    
     //on envoi la premiere ligne qui indique de qui elle provien
     send("HELO " + localHost);
    
     //on nous dit qu'elle a bien etait recu
     receive();
    
     //on envoi l'adresse de l'expediteur
     send("MAIL FROM: <" + from + ">");
    
     //on nous dit que ca c'est bien passe
     receive();
    
     //on envoi l'adresse du destinataire
     send("RCPT TO: <" + Destinataire + ">");
    
     //on recupere la reponse
     receive();
    
     //on passe au chose serieuse pour commencer l'envoi du corps
     
     send("DATA");
     //on verifie que le serveur soit pret
     receive();
    
     //on envoi plusieur balise utile
     send("Subject: " + subject);
     send("Date: " + new Date());
     send("Reply-To:" + from);
     send("To: " + Destinataire);
    
     send("Content-Type: text/html; charset=\"utf-8\"\n");
    
     //on envoi cahque ligne separement en utilisant \n comme delimitateur
     StringTokenizer tokenizer = new StringTokenizer(message, "\n");
    
     //la ligne ci dessous se traduit par : tant qu'il y a encore des ligne
     while (tokenizer.hasMoreTokens())
     send(tokenizer.nextToken());
    
     //pour finir l'envoi d'un mail il faut envoi sur une ligne un seul point
     send(".");
    
     //on verifie que le mail a etait accepte
     receive();
    
     //on quitte
     send("QUIT");
    
     //on nous dit que ca a bien quitter
     receive();
    
     //on ferme les flux
     in.close();
     out.close();
     sock.close();
    
     return true;
     }
     //methode qui recoit les information du servveur
     private static void receive() throws IOException {
     String line = in.readLine();
     if (line != null) {
     System.out.println(line);
     System.out.println("\n");
     }
    
     }
     //methode qui envoi des infos au serveur
     private static void send(String s) {
     System.out.print(s);
     System.out.print("\r\n");
     System.out.flush();
     out.print(s);
     out.print("\r\n");
     out.flush();
    
     }
    
     private static BufferedReader in;
    
     private static PrintWriter out;
     }
    C'est aussi du contet-type le type html est bien pris en content mais le charset non.

    Quelqu'un peut-il m'aider merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Avant de regarder ton code, peux-tu éditer ton message et mettre tout ca entre balises CODE stp ? Ce sera beaucoup plus lisible.
    Merci !

  3. #3
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    C'est ton PrintWriter qui n'encode pas automatiquement en UTF-8.

    Essaie ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    out = new PrintWriter ( new OutputStreamWriter ( 
    	sock.getOutputStream(), "UTF8" ) );

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4
    Par défaut
    Citation Envoyé par Pollux
    C'est ton PrintWriter qui n'encode pas automatiquement en UTF-8.

    Essaie ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    out = new PrintWriter ( new OutputStreamWriter ( 
    	sock.getOutputStream(), "UTF8" ) );

    Merci beaucoup ça marche très bien c'était bien ça qu'il fallait.
    Encore une dernière chose est ce que je sais utiliser une authentification avec ce code pour mon serveur smtp?

    Merci ça marche bien.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Citation Envoyé par kodipro
    est ce que je sais utiliser une authentification avec ce code [...]
    En lisant ca, je me suis dit "ca peut être qu'un belge" (origines nordiques obligent ...)
    A part ça, désolé, je m'y connais pas en smtp, c'était juste pour faire un clin d'oeil à la wallonie

  6. #6
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    A première vue, le code que tu utilises dialogue directement avec un serveur SMTP via un socket.
    Il s'agit donc d'un code "de bas niveau" (j'entends par là que ce code nécessite de connaître le format des messages à envoyer au serveur SMTP).
    Il existe des solutions plus simples à mettre en oeuvre :

    L'avantage de ses solutions par rapport à la tienne est qu'elles intègrent des fonctionnalités évoluées (comme l'authentification) pouvant être utilisés sans connaissance du protocole SMTP et donc du format des messages à échanger pour les mettre en oeuvre.

    Autrement dit, l'inconvénient de ta méthode est qu'elle t'oblige à connaître le format des messages à envoyer au serveur SMTP pour t'y authentifier.

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

Discussions similaires

  1. [ZF 2.x] Envoyer un mail HTML avec encodage UTF-8
    Par narmataru dans le forum Zend Framework
    Réponses: 4
    Dernier message: 07/06/2013, 15h09
  2. Fonction Mail et encodage UTF-8
    Par mikael2235 dans le forum Langage
    Réponses: 6
    Dernier message: 19/12/2012, 05h36
  3. [mail] Encodage UTF-8 avec mail()
    Par anxious dans le forum Langage
    Réponses: 9
    Dernier message: 02/12/2009, 22h56
  4. Pb Encodage UTF-8 pour Ooo
    Par Sylvain James dans le forum XMLRAD
    Réponses: 10
    Dernier message: 08/03/2006, 22h28
  5. [WebForms] Encodage, UTF-8 et accents
    Par alexischmit dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 28/04/2004, 12h21

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