Envoyer un email au format txt et html

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par toto2525, 7 Novembre 2010.

  1. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    Salut,

    J'ai ce sript php ci-dessous qui envoie un email au format text et html mais lorsque je reçois l'email au format html les liens ne sont pas surlignés (cliquables) dans l'email, c'est comme si les balises html <a href...> n'étaient pas prises en compte, voyez-vous une erreur dans mon code ?

    Merci pour votre aide.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
     
  3. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    Peut-on envoyer un email au format html et text (multipart/alternative) assez simplement avec PhpMailer afin que le destinataire puisse le lire en fonction du paramétrage de son logiciel d'email (affichage en text/plain ou en text/html des messages qu'il reçoit) ?
     
  4. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 889
    J'aime reçus:
    75
  5. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    Ca m'a l'air d'être top ce PhpMailer mais faut-il encore bien le paramétrer au départ, c'est pas trop technique ? J'ai pas de grandes connaissances dans tout ce qui touche aux techniques d'envoi d'emails ?
     
  6. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 889
    J'aime reçus:
    75
  7. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    C'est quand même dingue parce qu'on ne trouve jamais un code entier phpmailer pour envoyer un email au format html et text (multipart/alternative) il faut faire 36 forums pour bidouiller le code... alors qu'envoyer en email sous cette forme devrait (doit) être la règle ! C'est à croire que personne n'utilise le multipart/alternative :(

    J'essaie ce code ci-dessous mais ça marche pas :

     
  8. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 889
    J'aime reçus:
    75
    Et tu as quoi comme message d'erreur ? Pour info, avoir du CSS dans un mail, ce n'est pas conseillé car très mal supporté en fonction des clients de messagerie et webmail.
     
  9. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    J'ai ce message d'erreur :
    Code:
    Fatal error: Cannot access empty property in 
    
    J'ai viré le css dans mon email mais j'ai toujours cette erreur :(
     
  10. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 889
    J'aime reçus:
    75
    Tu t'es mélangé les pinceaux entre les méthodes et les variables de la classe.

    Entre autre :

    Code:
    $mail->Body($htmlBody);
    $mail->isHTML(true);
    $mail->AltBody($textBody);
    
    qui devrait être :

    Code:
    $mail->Body = $htmlBody;
    $mail->isHTML(true);
    $mail->AltBody = $textBody;
    
    Mais j'imagine que tu as un numéro de ligne concernant ton erreur ?
     
  11. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    Lorsque j'essaie ce code ci-dessous j'ai une erreur Fatal error: Cannot access empty property in sur la ligne 20, la ligne qui correspond à $mail->$htmlBody.='<html><body><center>....

    Code:
    $mail = new PHPmailer();
    
    $mail->AddAddress('mon@email.com');
    $mail->AddReplyTo($email_webmaster);
    $mail->Subject='Essai email';
    
    $mail->$htmlBody.='<html><body><center><table><tr><td class="entete">Voici un exemple d\'e-mail au format HTML. <a href=\'mailto:mon@email.com\'>mon@email.com</a> envoyé par un <i>script PHP</i> <a href=\'http://www.mon-site.com\'>www.mon-site.com</a>.</td></tr>';
    $mail->$htmlBody.='<tr><td class="ligne">Ceci est un tableau HTML</td></tr></table></center></body></html>';
    
    $mail->$textBody='Voici un exemple d\'e-mail au format text. mon@email.com envoyé par un script PHP http://www.mon-site.com.';
    $mail->$textBody.='Ceci est un essai.';
    
    $mail->Body = $htmlBody;
    $mail->isHTML(true);
    $mail->AltBody = $textBody;
    
    if(!$mail->Send()){ //Teste si le return code est ok.
    echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
    }
    else{
    echo 'L\'email a été envoyé avec succès';
    }
    unset($mail);
    
    
     
  12. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 889
    J'aime reçus:
    75
    Ca existe pas $mail->$htmlBody.
    Code:
    $mail->Body($htmlBody);
    par contre, oui.
     
  13. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
  14. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    C'était presque ça UsagiYojimbo :D

    En fait, il fallait juste enlever le $mail->$htmlBody et le $mail->$textBody ce qui donne le code mise à jour :

    Code:
    $mail = new PHPmailer();
    
    $mail->AddAddress('mon@email.com');
    $mail->AddReplyTo($email_webmaster);
    $mail->Subject='Essai email';
    
    $htmlBody='<html><body><center><table><tr><td class="entete">Voici un exemple d\'e-mail au format HTML. <a href=\'mailto:mon@email.com\'>mon@email.com</a> envoyé par un <i>script PHP</i> <a href=\'http://www.mon-site.com\'>www.mon-site.com</a>.</td></tr>';
    $htmlBody.='<tr><td class="ligne">Ceci est un tableau HTML</td></tr></table></center></body></html>';
    
    $textBody='Voici un exemple d\'e-mail au format text. mon@email.com envoyé par un script PHP http://www.mon-site.com.';
    $textBody.='Ceci est un essai.';
    
    $mail->Body = $htmlBody;
    $mail->isHTML(true);
    $mail->AltBody = $textBody;
    
    if(!$mail->Send()){ //Teste si le return code est ok.
    echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
    }
    else{
    echo 'L\'email a été envoyé avec succès';
    }
    unset($mail);
    
    Et là ça marche parfaitement !

    Une question : quels sont les avantages-inconvénients d'utiliser le smpt ou pas pour envoyer les emails ?
     
  15. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    Je suis entrain de voir comment il faut faire pour paramétrer correctement la langue des éventuels messages d'erreurs lors de l'envoi d'un email mais je trouve pas grand chose comme aide :?

    Dans le code php ci-dessous on trouve ErrorInfo qui renvoi normalement le texte des éventuelles erreurs d'envoie, c'est en langue anglaise par défaut mais on a une version française qui est dans un répertoire language/ comment indiquer à phpmailer d'utiliser le fichier français des erreurs (qui est dans language/phpmailer.lang-fr.php) ?

    Code:
    if(!$mail->Send()){
    echo $mail->ErrorInfo;
    }
    else{
    echo 'L\'email a été envoyé avec succès';
    }
    
     
  16. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
  17. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 116
    J'aime reçus:
    0
    Toto,

    envoies moi un MP stp. J'ai un code php qui permet de faire ça... (mais pas sous la main maintenant) Je te l'envoies quand je serais rentré.

    :wink:
     
  18. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 889
    J'aime reçus:
    75
    Il est vrai que le tuto est assez lacunaire sur cette question des langues. Il suffit en fait d'utiliser la méthode Setlanguage pour forcer la langue des messages (sachant que le path peut être différent).

    Code:
    $mail->SetLanguage('fr','phpmail/language/'); 
    
     
  19. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    Le path (phpmail/language/) du fichier d'erreur français doit être sous quel forme :
    Code:
    phpmail/language/
    ../phpmail/language/
    $_SERVER['DOCUMENT_ROOT']/phpmail/language/
    
    Je place donc le code ci-dessous dans mes scripts php et ça devrait marcher :
    Code:
    $mail = new PHPmailer();
    
    $mail->AddAddress('mon@email.com');
    $mail->AddReplyTo($email_webmaster);
    $mail->SetLanguage('fr','phpmail/language/'); 
    $mail->Subject='Essai email';
    
    $htmlBody='<html><body><center><table><tr><td class="entete">Voici un exemple d\'e-mail au format HTML. <a href=\'mailto:mon@email.com\'>mon@email.com</a> envoyé par un <i>script PHP</i> <a href=\'http://www.mon-site.com\'>www.mon-site.com</a>.</td></tr>';
    $htmlBody.='<tr><td class="ligne">Ceci est un tableau HTML</td></tr></table></center></body></html>';
    
    $textBody='Voici un exemple d\'e-mail au format text. mon@email.com envoyé par un script PHP http://www.mon-site.com.';
    $textBody.='Ceci est un essai.';
    
    $mail->Body = $htmlBody;
    $mail->isHTML(true);
    $mail->AltBody = $textBody;
    
    if(!$mail->Send()){ //Teste si le return code est ok.
    echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
    }
    else{
    echo 'L\'email a été envoyé avec succès';
    }
    unset($mail);
    
    Mais comment tester en réel que cela fonctionne bien ?

    Il y a dans le fichier class.phpmailer.php la fonction SetLanguage avec par défaut la langue anglaise, faut-il modifier quelque chose dans ce fichier ?
     
  20. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
    Pour tester tu t'envoies un mail à toi même :D

    Et non il ne faut pas modifier class.phpmailer.php
     
  21. toto2525
    toto2525 WRInaute occasionnel
    Inscrit:
    20 Septembre 2007
    Messages:
    345
    J'aime reçus:
    0
    Pour vérifier que la page d'erreur en français fonctionne bien je m'envoie un email ? Je pige pas là !
     
Chargement...
Similar Threads - Envoyer email Forum Date
Comment envoyer par email le contenu d'un formulaire ? Développement d'un site Web ou d'une appli mobile 23 Avril 2018
envoyer 10 000 email d'un coup Gmail, Google Talk, Blogger et Orkut 16 Septembre 2017
envoyer des emails à mes membres Développement d'un site Web ou d'une appli mobile 24 Novembre 2012
php comment proceder pour envoyer seulement 1 email Développement d'un site Web ou d'une appli mobile 31 Août 2012
Envoyer des emails vers des SMS ? (je suis chez free mobile..) Administration d'un site Web 14 Mai 2012
Newsletter : script pour envoyer à 60,000 emails Administration d'un site Web 27 Avril 2012
Envoyer un gone, avec un match sur un nom de parametre "variant" URL Rewriting et .htaccess 14 Octobre 2020
Envoyer un Rapport Analytic sans toutes les données Google Analytics 17 Janvier 2019
Envoyer un lien cliquable par mail à un ami Développement d'un site Web ou d'une appli mobile 29 Juillet 2018
[Google Shopping] envoyer toutes les déclinaisons ? AdWords 2 Avril 2016