Annonce

[15 février 2017] Publication de Wanewsletter 3.0.1

#1 2015-08-14 12:06:26

serge sotche
Membre
Lieu : paris
Inscription : 2015-08-14
Messages : 1

Mail recu vide avec fonction php

Bonjour,

Je rencontre un probleme lors de l'envoi de mes mails avec une fonction php.
depuis quelques jours mes mails arrivent vide sans corps de message ni piece jointe alors que ca fonctionnait très bien avant.
Mon script php est le suivant:

###########################################
<? require('cookie.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Liste des adhérents</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body link="black" vlink="black">

<?php
include ('../maintenance.php');
require "barre.php";
?>

<h2>Message envoyé avec succès</h2>

<?php

require( "config.inc.php" );
require( "requetes.inc.php" );

$cond = "ORDER BY nom";

?>

<?

if ($_FILES['fichier']['size'] != 0) {
  if (is_uploaded_file($_FILES['fichier']['tmp_name']))
  {
    $attach="oui";
    $fichier_temp = $_FILES['fichier']['tmp_name'];
 
    $nom_fichier = $_FILES['fichier']['name'];
    echo "Le fichier suivant a  été joint au message : '"
            . $nom_fichier . "'.<br><br>";
  }

  else
  {
    echo '<h3 style="color:#FF0000">ATTENTION, une erreur est survenue lors du téléchargement de ce fichier : ' . $_FILES['fichier']['name'] . "!</h3>";
    exit();
  }
}
//   print "fichier joint1  $fichier <BR>";
//    print "fichier joint2  $_FILES<BR>";

?>

<?

// declaration de la classe
require "mime_mail.class.php";

// ouverture et lecture du fichier

//$fichier = fread(fopen($fichier_temp, "r"), filesize($fichier_temp));

// DEBUT ouverture et lecture du fichier test Serge
//$file = fopen($fichier_temp,"rb");
//fread($file,filesize($fichier_temp));
//fclose($file);
// FIN ouverture et lecture du fichier test Serge

// instanciation de la classe
$mail = new mime_mail();
// sujet
$mail->subject = $_POST['sujet'];
// corps du message
$mail->body = $_POST['Message'];
//echo $Message;
// adresse email de l'expediteur (optionnel)
$mail->from = $FROM;

// entetes supplementaires (optionnel)
$entetemail = "X-Mailer: PHP/" . phpversion();
$mail->headers = "$entetemail";

// fichier attache (optionnel)
if ($attach=="oui") {
$fichier = fread(fopen($fichier_temp, "r"), filesize($fichier_temp));
$mail->attach("$fichier", "$nom_fichier");
}

$mime =  "";

// parametres optionnels
if (!empty($mail->from))    $mime .=  "From: ".$mail->from. "\n";
if (!empty($mail->headers)) $mime .= $mail->headers. "\n";
if (!empty($mail->body))    $mail->attach($mail->body,  "",  "text/plain");
// entete MIME

//$mime .=  "MIME-Version: 1.0\n" .$mail->build_multipart();
$mime .=  'Mime-Version: 1.0'."\r\n";

//$query = select( $login , '`email`' , $cond );
$query = select( $login , '`email`', $cond  );
//print "requete  $query";
$result = mysql_query($query) or die("Oupsss ......");
//print "result  $result ";
while ($line = mysql_fetch_array($result, MYSQL_BOTH)) {
  $dest = $line['email'];


    //if( !empty($dest) ){
    // adresse email de reception, passée en paramètres
    $mail->to = $dest;
        // envoi du message
    //mail($mail->to, $mail->subject, "", $mime);
    mail($mail->to, $mail->subject, $mime);

    print "Le Mail à été envoyé a  $dest<BR>";

//echo $dest; echo "<br/>";
// }

}

/* Liberation des resultats */
mysql_free_result($result);
/* Fermeture de la connexion */
mysql_close($link);?>
</body>
</html>
###########################################

Les données viennent d'un formulaire ci-joint:

###########################################
<? require('cookie.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
<title>UNAF - Mail collectif à tous les adherents</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body link="black" vlink="black">

<?php
include ('../maintenance.php');
require "barre.php";
?>

<h1>Envoyer un email a tous </h1>
<br/>
<h2> Attention : cette action peut prendre du temps ... </h2>

<FORM ACTION="mailCollectifAction.php" METHOD="post" enctype="multipart/form-data">

<table width="100%" cellspacing="5" style="text-align:center">
<TR>
<TD ALIGN="right">Sujet :</TD>
<TD ALIGN="left"><INPUT TYPE="text" NAME="sujet" SIZE="50"></TD>
</TR>
<TR>
<TD ALIGN="right">Piece jointe :</TD>
<TD ALIGN="left"><input type="file" name="fichier" size="50" MAXLENGTH="250"></TD>
</TR>
<TR>
<TD ALIGN="right">Message :</TD>
<TD ALIGN="left"><TEXTAREA NAME="message" WRAP="virtual" cols="80" rows="15"></TEXTAREA></TD>
</TR>
<TR>
<TD><INPUT TYPE="submit" VALUE="OK"></TD>
<TD><INPUT TYPE="reset" VALUE="R.A.Z"></TD>
</TR>
</TABLE>
</FORM>

</body>
</html>
###########################################

Ma classe MIME pour le mail est:

###########################################
<?

######################################################################
#  Classe mime_mail
######################################################################
#
# EXEMPLE D'UTILISATION
#
#
#
#   // declaration de la classe
#   require "mime_mail.class.php";
#
#   // ouverture et lecture du fichier
#   $fichier_attache = fread(fopen("test.jpg", "r"), filesize("test.jpg"));
#
#   // instanciation de la classe
#   $mail = new mime_mail();
#   // parametres
#   $mail->to = "adresse@email";                // Adresse email de reception
#   $mail->subject = "Test";                    // Sujet
#   $mail->body = "Ceci est un test.";          // Corps du message
#   $mail->from = "adresse@email";              // Adresse email de l'expediteur (optionnel)
#   $mail->headers = "Date: ";  // Entetes supplementaires (optionnel)
#   $mail->attach("$fichier", "test.jpg");      // fichier attache (optionnel)
#   // envoi du message
#   $mail->send();
#
#
#
######################################################################

class mime_mail
{

  var $parts;
  var $to;
  var $bcc;
  var $from;
  var $headers;
  var $subject;
  var $body;

  // constructeur       
  function mime_mail()
  {
   
    $this->parts = array();
    $this->to =  "";
    $this->bcc =  "";
    $this->from =  "";
    $this->subject =  "";
    $this->body =  "";
    $this->headers =  "";
 
  }

  // attache un fichier au message
  function attach($message,$name,$ctype = '')
  {
           
    // type de contenu non defini
    if(empty($ctype)){
      // on essaie de reconnaitre l'extension     
      switch(strrchr(basename($name), ".")){
        case ".gz":   $ctype =  "application/x-gzip"; break;
        case ".tgz":  $ctype =  "application/x-gzip"; break;
        case ".zip":  $ctype =  "application/zip";    break;
        case ".pdf":  $ctype =  "application/pdf";    break;       
        case ".png":  $ctype =  "image/png";  break;
        case ".gif":  $ctype =  "image/gif";  break;
        case ".jpg":  $ctype =  "image/jpeg"; break;
        case ".txt":  $ctype =  "text/plain"; break;
        case ".htm":  $ctype =  "text/html";  break;
        case ".html": $ctype =  "text/html";  break;
        default:      $ctype =  "application/octet-stream"; break;
      }
    }

    $this->parts[] =
                    array (
                      "ctype" => $ctype,
                      "message" => $message,
                      "encode" => $encode,
                      "name" => $name
                    );
   
    // fin de fonction
  }

  // fonction utilisee pour contruire le message MIME
  // utilisee depuis build_multipart()
  function build_message($part)
  {
 
    $message = $part[ "message"];
    $message = chunk_split(base64_encode($message));
    $encoding =  "base64";
   
    return  "Content-Type: ".$part[ "ctype"].
            ($part[ "name"]? "; name = \"".$part[ "name"]. "\"" :  "").
            "\nContent-Transfer-Encoding: $encoding\n\n$message\n";
 
  }

  // compose le message MIME
  // utilisee depuis send()
  function build_multipart()
  {

    $boundary =  "b".md5(uniqid(time()));
    $multipart =  "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";

    for($i = sizeof($this->parts) - 1; $i >= 0; $i--)
    {
      $multipart .=  "\n".$this->build_message($this->parts[$i]). "--$boundary";
    }

    return $multipart.=  "--\n";

  }

  // envoie le message
  // derniere fonction a appeler
  function send()
  {

    $mime =  "";
    // parametres optionnels
    if (!empty($this->from))    $mime .=  "From: ".$this->from. "\n";
    if (!empty($this->headers)) $mime .= $this->headers. "\n";
    if (!empty($this->bcc))     $mime .= $this->bcc. "\n";
    if (!empty($this->body))    $this->attach($this->body,  "",  "text/html");
    // entete MIME
    $mime .=  "MIME-Version: 1.0\n".$this->build_multipart();
   
    // envoi du message
    mail($this->to, $this->subject,  "", $mime);
 
  }

}; // fin de la classe


?>
###########################################

Je ne suis pas un codeur et j'essaye de dépanner mon association qui est bloqué alors je suis un peu perdu.

Merci pour votre aide.

Hors ligne

#2 2015-08-16 14:34:16

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 289

Re : Mail recu vide avec fonction php

Salut,

Ici, c'est un forum de support pour wanewsletter et wamailer. Tu devrais plutôt exposer ton problème sur un forum php généraliste. ;-)


PHP et MySQL, un duo gagnant !

Hors ligne

Pied de page des forums