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

Symfony PHP Discussion :

Mail HTML avec SwiftMailer et pièce jointe [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut Mail HTML avec SwiftMailer et pièce jointe
    Bonjour,

    Voici le code suivant qui envoie un mail au format HTML :

    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
    if ($urlFile != null) {
                
                $urFilePath = $_SERVER['DOCUMENT_ROOT'] . "/report/web/upload/doc/newsletter/" . $urlFile;
                
                $message = \Swift_Message::newInstance()
                        ->setSubject($subject)
                        ->setFrom($from)
                        ->setTo($to)
                        ->setBody($body)
                        ->attach(\Swift_Attachment::fromPath($urFilePath), "application/octet-stream");
                
            } else {
                $message = \Swift_Message::newInstance()
                        ->setSubject($subject)
                        ->setFrom($from)
                        ->setTo($to)
                        ->setBody($body);
            }
            
            $type = $message->getHeaders()->get('Content-Type');
            $type->setValue('text/html');
            $type->setParameter('charset', 'utf-8');
            
            $controlleur->get('mailer')->send($message);
    Quand il n'y a pas de pièce jointe, le mail est bien reçu au format HTML.

    Quand on ajoute une pièce jointe au même message, le mail est reçu au format texte : par exemple un lien apparaîtra sous cette forme <a href="blabla">Lien</a>. Par contre le fichier joint (formats Excel, Doc, etc) est bien transféré et s'ouvre correctement.

    Comment résoudre ce problème de mise en forme du mail lorsqu'une pièce jointe est ajoutée ?

    Merci d'avance.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  2. #2
    Membre du Club
    Homme Profil pro
    PHP + JAVA
    Inscrit en
    Mars 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : PHP + JAVA

    Informations forums :
    Inscription : Mars 2009
    Messages : 65
    Points : 60
    Points
    60
    Par défaut
    A la place de faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $type = $message->getHeaders()->get('Content-Type');
            $type->setValue('text/html');
            $type->setParameter('charset', 'utf-8');
    Fait plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message->setContentType("text/html");
    Pas besoin de récupérer ton content type. Autre chose, ton message est forcément en UTF-8 puisque Symfony impose que tous tes fichiers soient sous ce format d'encodage. Personnellement j'ai toujours fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $message = \Swift_Message::newInstance()
                        ->setContentType("text/html")
                        ->setSubject($subject)
                        ->setFrom($from)
                        ->setTo($to)
                        ->setBody($body);
    Qu'il y ait pièce jointe ou pas. Comme ça je suis sûr que mon message est interprété en HTML.En espérant que cela fonctionne (ça fonctionne pour moi avec pièce jointe).

  3. #3
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Merci pour ta réponse mais j'ai fais cela pour que l'envoi fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    $message = \Swift_Message::newInstance()
                        ->setSubject($subject)
                        ->setFrom($from)
                        ->setTo($to)
                        ->setBody($body, "text/html")
                        ->attach(\Swift_Attachment::fromPath($urFilePath), "application/octet-stream");
    
    $type = $message->getHeaders()->get('Content-Type');
    $type->setParameter('charset', 'utf-8');
    
    $controlleur->get('mailer')->send($message);
    En fait j'indique le type envoyé dans les fonctions setBody() et attach().

    Pour le charset, je ne suis pas d'accord avec toi. Effectivement mon message est en utf-8 : cette information est indiquée dans le message afin que le client destinataire sache que l'encodage est bien en utf-8. Cela évite des caractères accentués qui sont changés en n'importe quoi.

    Au fait, félicitation : +1

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

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

Discussions similaires

  1. Envoi d'e-mail complet avec image et pièce-jointe
    Par zakuli dans le forum Langage
    Réponses: 5
    Dernier message: 17/12/2009, 16h21
  2. Mail shell avec contenu et pièce jointe
    Par onime_no_squat dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/09/2009, 09h35
  3. [Mail] problème mail html avec pièce jointe
    Par stars333 dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2007, 19h44
  4. Réponses: 1
    Dernier message: 22/01/2007, 09h08
  5. [CSS] Envoi de mail html avec CSS et image jointe
    Par firejocker dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 03/03/2006, 08h53

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