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 :

[Javamail] Problème d'envoi d'un message multipart


Sujet :

API standards et tierces Java

  1. #1
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut [Javamail] Problème d'envoi d'un message multipart
    Bonjour,
    Mon problème c’est que je n’arrive pas à envoyer un mail avec multiparts (text plain et html à la fois), j’ai cherché sur internet et j'ai trouvé quelqu’un qui propose un code qui soit disant) résout le problème mais en vain, j’ai juste la partie texte qui s’affiche, mais l’autre partie HTML est reçue comme pièce jointe et illisible en plus

    Voici le code que j’ai trouvé :
    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
    	public static void envoyerMailSMTPKevinBridges(String serveur, boolean debug) {
    		// Create the message to send
    		Properties props = new Properties();
    		props.put("mail.smtp.host", host);
    		Session session = Session.getInstance(props, null);
    		MimeMessage message = new MimeMessage(session);
     
    		// Create the email addresses involved
    		InternetAddress from;
    		try {
    			from = new InternetAddress("from@from.com");
    			InternetAddress to = new InternetAddress(
    					"xxxx.xxxxxxxxxx@xxx.com");
     
    			// Fill in header
    			message.setSubject("I am a multipart text/html email");
    			message.setFrom(from);
    			message.addRecipient(Message.RecipientType.TO, to);
    			// Create a multi-part to combine the parts
    			Multipart multipart = new MimeMultipart();
     
    			// Create your text message part
    			BodyPart messageBodyPart = new MimeBodyPart();
    			messageBodyPart.setText("Here is your plain text message");
     
    			// Add the text part to the multipart
    			multipart.addBodyPart(messageBodyPart);
     
    			// Create the html part
    			messageBodyPart = new MimeBodyPart();
    			String htmlText = "<H1>I am the html part</H1>";
    			messageBodyPart.setContent(htmlText, "text/html");
     
    			// Add html part to multi part
    			multipart.addBodyPart(messageBodyPart);
     
    			// Associate multi-part with message
    			message.setContent(multipart);
     
    			// Send message
    			Transport.send(message);
     
    		} catch (AddressException e) {
    			e.printStackTrace();
    		} catch (MessagingException e) {
    			e.printStackTrace();
    		}
    	}
    Que dois-je modifier/ajouter ?
    Merci.

  2. #2
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut
    Re bonjour,
    J'ai essayé un code proposé dans le paragraphe Sending an HTML Email with the JavaMail API dans le tutoriel : Sending an Email using the JavaMail API. Ce code propose l'utilisation de l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Multipart multipart = new MimeMultipart("alternative");
    Or quand je le fais je n'ai qu'en affichage que la 2ème partie, à savoir HTML, la partie texte est écrasée je ne sais pas pourquoi
    Je trouve assez bizarre des choses simples aussi simples que ça qui manquent de documentation et d'explications

  3. #3
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut
    Pour le problème avec "alternative" c'est normal, d'ailleurs c'est l'objectif de ce mot clé, en effet quand on envoieun mail avec plusieurs parts le client mail n'affiche que celle qui lui convient, dans mon cas quand j'utilise thunderbird et j'affiche le code source du mail reçu je trouve :
    ...
    MIME-Version: 1.0

    ------=_Part_0_1925529038.1403528989111
    Content-Type: text/plain; charset="us-ascii"
    Content-Transfer-Encoding: 7bit

    Ceci est un text plain
    ------=_Part_0_1925529038.1403528989111
    Content-Type: text/html; charset="us-ascii"
    Content-Transfer-Encoding: 7bit

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head>
    <h1><p>Ceci est un text html</p></h1></html>
    ------=_Part_0_1925529038.1403528989111--
    Or le mail affiché est : Ceci est un text html

    Maintenant je continue à chercher comment afficher plusieurs parts dans un même mail sans avoir le problème de la pièce jointe comme indiqué dans le 1er sujet.

    Any help?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par TheBlue Voir le message
    Any help?
    As-tu songé à te demander si une telle chose existe ?

    Pourquoi, exactement, afficherait-on plusieurs contenus d'un mail autrement que sous forme de fichiers attachés, puisqu'il suffisait à la place de mettre tout ce qu'on avait à mettre dans un seul et unique contenu ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par thelvin Voir le message
    As-tu songé à te demander si une telle chose existe ?
    Sincèrement non

    Citation Envoyé par thelvin Voir le message
    Pourquoi, exactement, afficherait-on plusieurs contenus d'un mail autrement que sous forme de fichiers attachés, puisqu'il suffisait à la place de mettre tout ce qu'on avait à mettre dans un seul et unique contenu ?
    Aucune idée aussi, je me suis dis qu'il n'y a pas mal de le faire, sinon à quoi servirait d'utiliser les multiparts dans un mail

    Donc si j'ai bien compris ce que je demande n'existe pas puisqu'il ne sert à rien ?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par TheBlue Voir le message
    Aucune idée aussi, je me suis dis qu'il n'y a pas mal de le faire,
    En informatique bien formatée, la question n'est pas "serait-il criminel de faire ça" mais "est-ce que ça a vraiment une chance de servir à quelque chose ?" *
    J'ai déjà dit pourquoi ça ne sert à rien, donc voilà.

    (* Plus exactement : les gens qui travaillent là-dedans sont assez étranges et considèrent criminel tout acte de standardisation d'une chose qui ne peut pas servir à quelque chose. Au moins ça limite le nombre d'imbécilités que nous autres informaticiens sommes obligés de gérer derrière.)

    Citation Envoyé par TheBlue Voir le message
    sinon à quoi servirait d'utiliser les multiparts dans un mail
    Les pièces attachées par exemple ? Et l'ancestral choix entre HTML et texte pur, aussi.

    Citation Envoyé par TheBlue Voir le message
    Donc si j'ai bien compris ce que je demande n'existe pas puisqu'il ne sert à rien ?
    Je peux pas jurer que ça existe pas, mais j'ai jamais entendu parler d'un format mail pour faire ça. Donc si toi tu avais un exemple en tête on aurait pu aller le regarder, c'est pas le cas, tant pis.

    À la limite il y aurait bien les attachements CID, qui permettent de mettre des images dans le HTML sans les encoder en base64. Mais ils servent à quelque chose : les contenus insérés ainsi sont utilisés par le contenu affiché par le mail.
    Pas à rien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut
    Merci thelvin pour ces précieuses clarifications.
    Je mets le sujet en résolu.
    Cordialement.

  8. #8
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut
    J'ai trouvé un exemple qui m'a fait penser à cette discussion, je n'ai pas pu m'empêcher de passer par là. Quand on croise ce genre de tutoriels qui ne marchent pas
    JavaMail: Créer et envoyer un email en ‘multipart/mixed’

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    En y réfléchissant un peu plus, il faut reconnaître que si on met pas de header Content-Disposition, alors on n'indique pas que c'est une pièce attachée et notamment pas son nom de fichier.
    Du coup, l'idée est vraisemblablement que le client mail en fait bien ce qu'il veut, ça le regarde. Les afficher l'un à la suite des autres étant a priori une idée comme une autre, mais qui possiblement ne leur "plaît" pas (C'est peut-être que mon avis, mais ce n'est plus très en phase avec l'informatique actuelle qui cherche à ce que tout soit bien présenté et intégré.)

    En plus de nos jours, n'importe quel client mail affichera une prévisualisation de ce qu'il présente comme pièces attachées, alors au bout d'un moment, la différence, hein.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [MySQL] Problème d'envoi d'un message
    Par glodybiss4 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 02/11/2011, 09h31
  2. Problème d'envoi d'un message
    Par dadaapocalypse dans le forum VBScript
    Réponses: 3
    Dernier message: 16/11/2009, 19h20
  3. [JavaMail] problème d'envoi de courrier avec SMTP
    Par Raumsog dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 24/01/2008, 12h25
  4. [javamail] problème d'envoi
    Par caballero dans le forum API standards et tierces
    Réponses: 17
    Dernier message: 19/01/2007, 16h27
  5. [javamail]problème d'envoi d'email
    Par khokho dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 29/12/2006, 15h44

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