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

Bibliothèques et frameworks PHP Discussion :

[PEAR][Mail] Utilisation de la classe Mail pour envoi de texte : caractères non reconnus


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut [PEAR][Mail] Utilisation de la classe Mail pour envoi de texte : caractères non reconnus
    Bonjour,
    J'utilise la class Mail de Pear pour une liste de diffusion, mais lorsque j'envoie un texte au format word les caractères sont pas reconnus par mon client de messagerie.
    Et je n'arrive pas également a envoyer ce mail en version HTML.
    Queulqu'un s'y connait t-il dans cette classe ?
    Pour info j'utilise le gestionaire de liste de diffusion du livre PHP & MySQL de luke welling et Laura Thomson.
    Merci

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je vois pas le lien entre un document word et un client de messagerie.
    Et sans code on peu pas s'en sortir.

  3. #3
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    ok voici le code qui va chercher sur le serveur le fichier HTML et le fichier texte de la news letter.
    Il envoi un mail à l'administarteur, et ensuite a ceux qui ont soucirs a la news letter.
    Ce qu'il y a c'est que je peux uniquement faire un message sous notepad en .txt pour qu'il soit mis comme body du message envoyé.
    Le document HTML ne marche pas.
    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
       include('Mail.php');
        include('Mail/mime.php');
        $message = new Mail_mime("\r\n");
        $textfilename = "archive/$listid/$mailid/text.txt";
        $tfp = fopen($textfilename, "r");
        $text = fread($tfp, filesize($textfilename));
        fclose($tfp);
     
        $htmlfilename = "archive/$listid/$mailid/index.html";
        $hfp = fopen($htmlfilename, "r");
        $html = fread($hfp, filesize($htmlfilename));
        fclose($hfp);
     
        $message->setTXTBody($text);
        $message->setHTMLBody($html);
     
     
        $query = "select path, mimetype from images where mailid = $mailid";
        if(db_connect())
        {
          $result = mysql_query($query);
          if(!$result)
          {
            echo '<p>Unable to get image list from database.';
            return false;
          }
          $num = mysql_numrows($result);
          for($i = 0; $i<$num; $i++)
          {  
     
            $imgfilename = "archive/$listid/$mailid/".mysql_result($result, $i, 0);
            $imgtype = mysql_result($result, $i, 1);
     
     
            $message->addHTMLImage($imgfilename, $imgtype, $imgfilename, true);
          }
        }  
     
     
        $body = $message->get();  
     
     
        $from = '"'.get_real_name($admin_user).'" <'.$admin_user.'>';
        $hdrarray = array(              
                     'From'    => $from,
                     'Subject' => $subject);
     
        $hdrs = $message->headers($hdrarray);
     
     
        $sender =& Mail::factory('mail');
     
        if($status == 'STORED')
        {
     
     
          $sender->send($admin_user, $hdrs, $body);
     
     
          mail($admin_user, $subject, $text, 'From: "'.get_real_name($admin_user).'" <'.$admin_user.">");
     
          echo "Mail sent to $admin_user"; 
     
     
          $query = "update mail set status = 'TESTED' where mailid = $mailid";
          if(db_connect())
          {
            $result = mysql_query($query);
          }    
     
          echo '<p>Press send again to send mail to whole list.<center>';
          display_button('send', "&id=$mailid");
          echo '</center>';
        }    
        else if($status == 'TESTED')
        {
          //send to whole list
     
     
          $query = "select sub_lists.userid, 
                            user.iduser, user.email 
                    from sub_lists, user 
                    where listid = $listid and 
                          sub_lists.userid = user.iduser";
     
          if(!db_connect())
            return false;
     
          $result = mysql_query($query);
          if(!$result)
            echo '<p>Error getting subscriber list';
     
     
     
          while($val=mysql_fetch_array($result))
          {
     
     
     
              mail($val["email"], $subject, $text, 
                             'From: "'.get_real_name($admin_user).'" <'.$admin_user.">");
     
     
          }
    Voilà le code, je suis pas trop familier avec cette classe c'est pour cela que j'y arrive pas.
    merci à ceux qui pourront m'aider.

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Si tu utilise une classe de Mail, ce n'est pas la peine d'utiliser la fonction mail() de php, il y a comme qui dirait double emploi.

    Sinon pourquoi as-tu choisis pear ?

  5. #5
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    c'est un code tiré d'un bouquin.
    Je pense que la class Mail de Pear doit servir pour envoyer au format HTML, et celle de PHP pur envoyer au format texte.
    Je me demande si la class est bien insatnciée car voici l'adresse du script qui l'appele : www/admin/liste_diffusion/mlm_fns.php ?!
    C'est un peu le trou noir là !!

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pourquoi as tu choisis pear ?

  7. #7
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    Je t'ai dis c'est un code pris du livre PHP MySQL de Laura Thomson, elle utilise pear pour envoyer le bulletin au format HTML et au format Texte.
    Moi je n'ai aucune exigence, si j'arrive a envoyer mon bulletin en HTML et en texte je serai satisfait, qu'importe la methode.

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Personnelemnt, j'ai jeté un jour un oeil sur la classe mail de pear et j'ai laissé tomber car je trouvait l'utilisation un peu lourde.
    Je te conseille plutot cette classe : http://www.phpguru.org/static/mime.mail.html

    Il y a 5 exemples dedans mais le 1° devrait suffire.

    Sinon je te déconseille d'écrire ton message html avec word. J'utiliserais plutot un éditeur wysiwyg tel que FCKeditor, tinyMCE, ... Qui n'insère pas du code abscon dans le source html, comme le fait word...

  9. #9
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    Ok merci je vais regarder ca et je te dirai.
    Le fait est qu'il y a des personnes qui n'acceptent pas de recevoir des mails au format HTML, c'est pour cela que je voudrai faire une version texte.
    C'est quoi du code "abscon" ? J'ai ce probleme car j'ai fais une interface admin pour un site et j'ai les utilisateurs qui n'ont que des fichiers word, et si ils font des copier/coller cela fait n'importe quoi dnas FCKeditor.
    Je suis obligé de les faire passer par frontpage avant de re-coller dans l'editeur.

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Alors il me semble qu'il y a une option sur l'un des deux editeurs qui permet de nettoyer le html généré par word.

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    http://www.fckeditor.net/ =>
    Paste from Word cleanup with auto detection

  12. #12
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    Bon j'arrive a envoyer un email HTML mais cela ne m'affiche pas correctement les balises, il faut faire un enregistrement special ?
    Par exemple je mets le texte en rouge et l'enregistre en htm et quand je le recois cela me donne ca :
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

    le texte

  13. #13
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Il nous manque quelques informations :
    - le source du message envoyé
    - le source du message reçu (y compris les headers)
    - la classe utilisée (toujours pear ?)

  14. #14
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    Oui j'utilise pear, voici le source du html que j'envoie :
    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Document sans nom</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    <!--
    .Style1 {color: #FF0000}
    -->
    </style>
    </head>
     
    <body>
    test <span class="Style1">mail </span>
    </body>
    </html>
    et dans ma boite je reçois ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
     
    test mail

  15. #15
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    j'ai suivi tes conseils en partie, et donc je fais mon mail a partir de FCKeditor, je l'enregistredans la base et tout va bien.
    Ensuite je l'envoie correctement mais je le reçois comme ceci :
    <font color="#ff0000">mail</font>
    Voici comment je l'envoie avec PHP :
    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
     
    include('Mail.php');
    include('Mail/mime.php');
     
        $message = new Mail_mime("\r\n");
     
         $query = "select texte 
                    from mail 
                    where mailid = $mailid";
     
          $result = mysql_query($query);
          $val = mysql_fetch_array($result);
     
    $html = $val["texte"];
     
    $message->setHTMLBody($html);
     
    $body = $message->get();  
     
        $from = '"'.get_real_name($admin_user).'" <'.$admin_user.'>';
     
        $hdrarray = array(              
                     'From'    => $from,
                     'Subject' => $subject);
     
        $hdrs = $message->headers($hdrarray);
     
        $sender =& Mail::factory('mail');
     
     mail($val["email"], $subject, $html, 
                             'From: "'.get_real_name($admin_user).'" <'.$admin_user.">");

  16. #16
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu es chez quel hébergeur ?

  17. #17
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Voici un exemple d'envoi de mail avec Mail_Mime :
    http://pear.php.net/manual/en/package.mail.mail-mime.example.php

  18. #18
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    ton code en lien fonctionne correctement.
    Ce que je comprends pas c'est que mon code avec le texte crée par FCKeditor ne fonctionne pas. Pourtant dans ma base il me met bien les balises mais quand je le recois elles ne sont pas interprétées.
    J'ai même enlevé dans ton code les balises <html> et <body> pour ne laisser qu'une <u> par exemple et bien je reçois bien le texte souligné.
    J'y comprends plus rien

  19. #19
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Parce que dans ton code tu n'utilises pas la classe Pear::Mail pour envoyer ton message mais la fonction mail de php.

    Donc si l'exemple de la doc fonctionne, tu n'as plus qu'à l'adapter pour qu'il prenne ton message html provenant de FCKeditor

  20. #20
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    le code marche mais lorsque je le mets sur le mien cela ne fonctionne plus, pourtant j'ai l'impression de bien faire les manips
    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
    include('Mail.php');
        include('Mail/mime.php');
    	$message = new Mail_mime("\r\n");
    	$query1 = "select texte 
                    from mail 
                    where mailid = $mailid";
          $result1 = mysql_query($query1);
    	  $val1 = mysql_fetch_array($result1);
     
    $text = 'Text version of email';
    //$html = $val1["texte"];
    $html = 'texte en html';
    $file = '/home/richard/example.php';
    $crlf = "\n";
    $hdrs = array(
                  'From'    => 'admin@site.org',
                  'Subject' => 'Test mime message'
                  );
     
    $mime = new Mail_mime($crlf);
     
    $mime->setTXTBody($text);
    $mime->setHTMLBody($html);
    $mime->addAttachment($file, 'text/plain');
     
    $body = $mime->get();
    $hdrs = $mime->headers($hdrs);
     
     
     
          $query2 = "select sub_lists.userid, 
                            user.iduser, user.email 
                    from sub_lists, user 
                    where listid = $listid and 
                          sub_lists.userid = user.iduser";
     
          if(!db_connect())
            return false;
     
    		$result2 = mysql_query($query2);
          	if(!$result2)
     
          	echo '<table class="interdit"align="center"><tr><td><p>'.$tr_connection_impossible.'</p></td></tr></table>';    
     
          while($val2=mysql_fetch_array($result2))
          {
     
         $mail =& Mail::factory('mail');
         $mail->send($val2["email"], $hdrs, $body);
    	 }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. classe Properties pour envoi mail
    Par sub_zero dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 13/11/2012, 12h01
  2. [PEAR][Mail] Utilisation de la classe Mail
    Par krapno dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/07/2008, 16h51
  3. [Mail] utilisation de la fonction mail en php
    Par chti_juanito dans le forum Langage
    Réponses: 4
    Dernier message: 03/05/2008, 11h57
  4. [Mail] Utilisation de la fonction mail
    Par Shivaneth dans le forum Langage
    Réponses: 1
    Dernier message: 21/06/2007, 14h42
  5. [Mail] Utilisation de la fonction mail()
    Par NeuroGen dans le forum Langage
    Réponses: 4
    Dernier message: 11/07/2006, 21h33

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