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

API standards et tierces Java Discussion :

Problème d'envoi de mail dans une application web


Sujet :

API standards et tierces Java

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Problème d'envoi de mail dans une application web
    Bonjour tout le monde,

    J'ai un souci d'envoi de mail,

    Le code suivant fonctionne parfaitement dans une classe de test ou un main.

    J’utilise exactement le même code dans mon application web, je reçois bien mail, mais le contenu qui est du HTML est mal interprété.

    J’ai exploré les pistes liées au charset, sans succès

    Environnement :
    java 1.5
    Tomcat 5.0


    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
     
    StringBuffer stringBuffer = new StringBuffer();
    		stringBuffer.append("<html>");
    		stringBuffer.append("<body>");
    		stringBuffer.append("<p>Madame, Monsieur, </p>");
    		stringBuffer.append("<p> HELLO WORD");
    		stringBuffer.append("</p>");
    		stringBuffer.append("<p>Très sincèrement.</p>");
    		stringBuffer.append("<br><br>");
    		stringBuffer.append("</body></html>");
     
    		try {
    			String smtp_server = PARAM_SMTP_SERVER;
    			String sender_email = PARAM_SENDER_EMAIL;
    			String mail_user = PARAM_EMAIL_USER;
    			String mail_pwd = PARAM_EMAIL_PWD;
     
    			Properties props = System.getProperties();
    			props.setProperty("mail.transport.protocol", "smtp");
    			props.setProperty("mail.host", smtp_server);
    			props.setProperty("mail.user",mail_user);
    			props.setProperty("mail.password", mail_pwd);
     
    			//Initialisation de l'envoi d'email.
    			Session mailSession = Session.getDefaultInstance(props, null);
    			Transport transport = mailSession.getTransport("smtp");
    			transport.connect(smtp_server, mail_user, mail_pwd);
     
    			//construit une adresse mail à partir de l'adresse et du nom do user
    			InternetAddress senderInternetAdress = new InternetAddress(sender_email);
     
    			//instance d'un email.
    			MimeMessage message = new MimeMessage(mailSession);
    			// On set le sujet du mail, on tente de l'encoder pour assurer le support des caractères accentués.
    			message.setSubject("Subject mail ");
     
    			// create and fill the first message part
    			MimeBodyPart mbp1 = new MimeBodyPart();
    			mbp1.setText(stringBuffer.toString());
    //mbp1.setContent(stringBuffer.toString(),"text/html; charset=utf-8");		
    mbp1.setContent(stringBuffer.toString(),"text/html; charset=ISO-8859-1");
    			// create the Multipart and add its parts to it
    			Multipart mp = new MimeMultipart();
    			mp.addBodyPart(mbp1);
     
    			// On set le destinataire de l'email.
    			message.setContent(mp);
     
    			InternetAddress iadress=new InternetAddress(myEmail);		
     
    			message.addRecipient(Message.RecipientType.TO, iadress);		
     
    			message.setFrom(senderInternetAdress);
     
    			//Envoi d'email.
    			transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
    			transport.close();
     
    		}catch (Exception e)  {
    			e.printStackTrace();
    		}
    Je pense que c'est lié fortement à l'application web.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    mbp1.setText
    et
    mbp1.setContent
    encodent tous les deux le texte avec le platform default encoding. Le seul moyen d'avoir le controle sur l'encodage est de remplacer ces appel par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setDataHandler(mydatasource)
    en lui fournissant un datasource que tu aura implémenté toi même

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci de ton intervention tchize_, j'ai testé ta solution, sans succès.

    J'ai testé en modifiant le header, pareil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mbp1.setText(stringBuffer.toString());
    mbp1.setHeader("Content-Type", "text/html;charset=\"iso-8859-1\""); 
    mbp1.setHeader("Content-Transfert-Encoding", "8bit");
    voici une partie de l'email reçu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ------=_Part_0_5763977.1255955734162
    Content-Type: text/html;charset="utf-8"
    Content-Transfer-Encoding: quoted-printable
     
    <html><body><p>Madame, Monsieur, </p><p> HELLO WORD</p><p>Notre Service


  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    comme je l'ai dit, utilise setDataHandler :/

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataHandler data = new DataHandler(stringBuffer.toString(), "text/html;  charset=UTF-8");
    mbp1.setDataHandler(data);
    voila, mais rien ne change

    c quelque part dans mon projet java, j'en suis certains

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par BNacer Voir le message
    voila, mais rien ne change
    tu dois implémenter aussi ta propre datasource, c'est elle qui donnera le contenttype, le contenu, etc:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mbp.setDataHandler(new DataHandler(myDataSource));
    //...
    public class MyDataSource implements DataSource{
      public String getContentType(){.....}
      public InputStream getInputStream() {......}
      public String getName() {.....}
      public OutputStream getOutputStream(){return null;}
    }

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour tout le monde,

    et bien après un bon moment de galère, j'ai finalement trouvé. il s'agit d'un conflit entre les jar "geronimo-javamail_1.4_spec-1.3.jar et geronimo-activation_1.1_spec-1.0.2.jar." et ceux de "activation.jar" et "javamail.jar"

    Merci pour les participants et notamment à toi tchize_

  8. #8
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut
    S'il vous plait BNacer, comment vous avez résolu votre problème de conflit entre les 2 bibliothèques?

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

Discussions similaires

  1. Envois d'un e-mail dans une application web JEE 6
    Par sarsar88 dans le forum JSF
    Réponses: 0
    Dernier message: 25/08/2011, 15h29
  2. Problème de gestion de suppression dans une application web dynamic data
    Par mo5andes dans le forum Développement Web avec .NET
    Réponses: 4
    Dernier message: 21/06/2010, 10h35
  3. [MySQL] Envoi de SMS dans une application web en PHP
    Par Grudu86 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/04/2007, 17h53
  4. Envoie de mail dans une page jsp
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2006, 11h34
  5. Créer un mail dans une application
    Par Cedced dans le forum Windows
    Réponses: 1
    Dernier message: 03/10/2005, 11h35

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