Vous n'êtes pas identifié(e).
[25 janvier 2021] - Publication de Wanewsletter 3.1.0
Pages : 1
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
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
Pages : 1