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

Langage PHP Discussion :

[Mail] Problème étrange avec PHP en ligne de commande


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Points : 127
    Points
    127
    Par défaut [Mail] Problème étrange avec PHP en ligne de commande
    Bonjour à tous,

    J'ai fait un script PHP qui lit dans des bases de données diverses infos, puis génère une liste de liens HTML que j'envoi ensuite pas mail.

    Jusque là pas de problème.

    Tout ça doit tourner en ligne de commande, pas de problème non plus, ça marche.

    Mais, car il y a bien un "mais", dans l'email apparaissent des caractères qui ne sont pas dans le script que j'ai créé
    De façon assez régulière dans le mail, des "! " accompagnés d'un saut de ligne sont venus s'insérer en plein milieu de chaines qui sont tappées en dur dans le script.

    Je bataille avec ça depuis une semaine, mais pas moyen de trouver de solution, donc je poste ici.

    Merci d'avance.

    PS: Je poste sans exemple de code au cas où quelqu'un connaitrait le problème, je tiens prêt un exemple du code modifié au cas où ce serait utile (il y a des infos à ne pas montrer là-dedans et je n'ai pas encore eu le temps de modifer tout ça)

  2. #2
    Membre habitué Avatar de Aliosha
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 124
    Points : 138
    Points
    138
    Par défaut
    Heu... Un bout de code serait effectivement bienvenu
    « Le vécu-plat excite le chaos-rêve. » Traité de l'inactivité, Dimitri Grouchkch.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Points : 127
    Points
    127
    Par défaut
    Salut,
    tu as raison, donc voici le code de mon script:
    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    <?php
     
    mysql_connect("localhost","root","") or die (mysql_error());
    mysql_select_db("BASSEDEDONNEES") or die (mysql_error());
    //-- 
    function getCriteres($ligne){
              //-- Type de transaction 
              $crit = "";
              $crit .= " and bitypop = ".$ligne['typTransac']." ";
              //-- Type Operation, peut etre multiple separe par des virgules
              $crit .= " and bitypoperation in (".$ligne['t_bien'].") ";
              //-- Surface
              if ($ligne['surf_min'] != "" && $ligne['surf_max'] != ""){
              		if (($ligne['surf_min'] < $ligne['surf_max']) && $ligne['surf_min'] >= 0){
              		       $crit .=" and (bisurface between '".$ligne['surf_min']."' and '".$ligne['surf_max']."')";
              		}
              		if (($ligne['surf_min'] > $ligne['surf_max']) && $ligne['surf_max'] == 0){
              			     $crit .= " and bisurface > '".$ligne['surf_min']."'";
              		}
              		if (($ligne['surf_min'] == $ligne['surf_max'])){
              		       $crit .= " and bisurface = '".$ligne['surf_max']."'";
              		}
          	  }
              //-- Surface Terrain
              if ($ligne['surft_min'] != "" && $ligne['surft_max'] != ""){
              		if (($ligne['surft_min'] < $ligne['surft_max']) && $ligne['surft_min'] >= 0){
              		       $crit .=" and (bisurface_terrain between '".$ligne['surft_min']."' and '".$ligne['surft_max']."')";
              		}
              		if (($ligne['surft_min'] > $ligne['surft_max']) && $ligne['surft_max'] == 0){
              			     $crit .= " and bisurface_terrain > '".$ligne['surft_min']."'";
              		}
              		if (($ligne['surft_min'] == $ligne['surft_max'])){
              		       $crit .= " and bisurface_terrain = '".$ligne['surft_max']."'";
              		}
          	  }
          	  //-- Prix
          	  if ($ligne['pr_min'] != "" || $ligne['pr_max'] != ""){
              		if (($ligne['pr_min'] < $ligne['pr_max']) && $ligne['pr_min'] >= 0){
              		       $sql .=" and (bifipveu between '".$ligne['pr_min']."' and '".$ligne['pr_max']."')";
              		}
              		if (($ligne['pr_min'] > $ligne['pr_max']) && $ligne['pr_max'] == 0){
              			$sql .= " and bifipveu > ".$ligne['pr_min']."";
              		}
              		if (($ligne['pr_min'] == $ligne['pr_max'])){
              		        $sql .= " and bifipveu = '".$ligne['pr_max']."'";
              		}
          	  }
              //-- Pieces
              if ($ligne['pi_min'] != "" && $ligne['pi_max'] != ""){
              		if (($ligne['pi_min'] < $ligne['pi_max']) && $ligne['pi_min'] >= 0){
              		       $crit .=" and (binbpieces between '".$ligne['pi_min']."' and '".$ligne['pi_max']."')";
              		}
              		if (($ligne['pi_min'] > $ligne['pi_max']) && $ligne['pi_max'] == 0){
              			     $crit .= " and binbpieces > '".$ligne['pi_min']."'";
              		}
              		if (($ligne['pi_min'] == $ligne['pi_max'])){
              		       $crit .= " and binbpieces = '".$ligne['pi_max']."'";
              		}
          	  }
          	  return $crit;
    }
     
    function sendEMail($liB,$cmp){  
        $from = "monadresseemail";
    	  //$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    	  $header = "From: ".$from . "\r\n".$headers."";	  
    	  // destinataire
    	  $to = "monadresseemail";
    	  // Sujet
    	  $sujet = "Email de Test";
    	  // Message
    	  $message .= "<font color=\"#f00000\">".$cmp."</font>";
    	  if (mail($to, $sujet, $message, $header)){
    	      $envoiOri = 1;
    	  }	  
    }
     
    //-- Boucler les users
    $s = mysql_query("select * from users where codeprov = '001143'") or die (mysql_error());
    while($row = mysql_fetch_array($s)){
        $x = mysql_query("select * from cmdusers where userid = ".$row['id']." and codeprov = '".trim($row['codeprov'])."'");
        $i = 0;
        while($ligne = mysql_fetch_array($x)){
            if ($ligne['dtExpire'] > time()){
            $i++;
              $crit = "";
              $crit = getCriteres($ligne);
              $b = mysql_query("select * from annonces where 1 ".$crit." and biagence = '001143'") or die(mysql_error());
              if (mysql_num_rows($b) > 0){
                  //$addUrl .= "Alerte ".$i."<br>"; 
                  $urls = "";
                  while ($liB = mysql_fetch_array($b)){
                        //-- Insertion des URL dans le message
                        if ($liB['bitypop'] == 1){
                            $typ = "A vendre";
                        }else{
                            $typ = "A louer";
                        }                 
                        $urls .=  "<a href=\"http://unedadresseinternet/annonce-".trim($liB['bicodag']).".html\">".$typ."</a><br>";
                  }
                  $liB['nomUser'] = $row['nom'];
                  $liB['prenomUser'] = $row['prenom'];
                  $addUrl .= $urls;
              }
            }
        }
        if ($addUrl <> ""){
            echo "Envoi de Mail : ".$i." \n";
            sendEMail($liB,$addUrl);
            $addUrl = "";
        }
    }
    ?>
    A améliorer, mais l'essentiel est là, et il fait bien ce qu'on lui demande.

    Et voici ce que je reçois par mail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <font color="#f00000"><a href="http://unedadresseinternet/annonce-0011436077_IDV.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143118.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143119.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143134.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143139.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143118.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143134.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143139.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143118.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143134.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143139.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143118.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143!
     134.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143139.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011439096.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143123.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011436.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011436091_IDV.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-00114388.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143138.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-00114339.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011435843_IDV.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143103.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143141.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143142.html">A vendre</a><br><a href="http://unedadresseinternet/annonce!
     -0011435979_IDV.html">A vendre</a><br><a href="http://unedadre!
     sseinter
    net/annonce-00114343.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143107.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143136.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143121.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011435836_IDV.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-00114364.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143135.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-00114310174.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011435982_CEI.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011437994.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143104.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143146.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011439139.html">A vendre</a><br><a href="http://uneda!
     dresseinternet/annonce-001143113.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011435892_IDV.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143130.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143120.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-00114399.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143117.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011436133_CEI.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143127.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-00114357.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011436035_IDV.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143128.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011436069_IDV.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143133.html">A vendre</a><br><a !
     href="http://unedadresseinternet/annonce-001143147.html">A ven!
     dre</a><
    br><a href="http://unedadresseinternet/annonce-0011435900_IDV.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-001143144.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-00114310293.html">A vendre</a><br><a href="http://unedadresseinternet/annonce-0011436173_ABS.html">A vendre</a><br></font>
    en version texte.

    Comme vous pouvez le voir, il y a des "! " qui viennent s'intercaller en plein milieu du message, alors qu'ils ne sont pas du tout là dans le script . Ce qui est très gênant quand le message passe en version HTML.

    Le script est lancé comme suit : "/usr/bin/php -f lenomdufichierPHP" sur un serveur Linux RedHat.

    J'ai cherché du coté de l'encodage du fichier, du message, du texte, etc ... mais le problème persiste malgré tous mes essais.

    Merci.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Points : 127
    Points
    127
    Par défaut
    Encore moi !

    Bon, plus d'une semaine à me casser la tête là-dessus et j'ai trouvé.

    Il s'agit d'un "bug" connu de la fonction mail de PHP => http://bugs.php.net/bug.php?id=13044&edit=1

    En faisant une recherche sur Google : "php 990 charactere" la réponse est en n°1.

    Il faut "casser" la chaine HTML pour éviter ce bug d'affichage, et donc mettre des retours à la ligne réguliers dans la chaine qui représente la page HTML envoyée.

    Le problème semble être résolu pour moi en faisant ça.

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

Discussions similaires

  1. [Oracle] L'extension oci ne se lance pas avec php en ligne de commande ?
    Par Kentpachi dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 29/05/2008, 08h54
  2. Problème étrange avec Mail::Sender
    Par Arioch dans le forum Modules
    Réponses: 17
    Dernier message: 01/11/2007, 13h42
  3. [Mail] Envoi email avec php
    Par laymounos dans le forum Langage
    Réponses: 8
    Dernier message: 01/06/2006, 14h31
  4. [FLASH MX2004 PRO] Problème étrange avec LoadClip...
    Par josemoroide dans le forum Flash
    Réponses: 6
    Dernier message: 04/08/2004, 15h41

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