Problème : mail() PHP

Fermé
Jeryagor Messages postés 11 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 25 novembre 2008 - 27 juin 2008 à 11:43
Jeryagor Messages postés 11 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 25 novembre 2008 - 30 juin 2008 à 09:35
Bonjour à tous.

Je viens d'acheter un hébergement chez 1&1.

Je me sers d'une base de données dans laquelle je stocke les adresse mails de mes clients (environ 800-1000 adresses mails stockées). Le but est d'utiliser un script PHP pour leur envoyer un mail.

J'ai donc réalisé un script permettant d'expédier successivement le même mail à 200 personnes pour commencer (les 200 personnes sont représentées par une seule et même adresse, la mienne, pour faire les essais).

Pour les infos permettant de peut-etre mieux comprendre le script, la table Test_Mails contient une liste de mails (en l'occurence une seule et même adresse, la mienne...).

Il y a une erreur lors de l'envoi du mail. Je pense que ça vient de la construction de ma variable $destinataire mais je ne sais pas trop comment m'y prendre...

J'espère que vous saurez m'éclairer sur les erreurs que contient mon script.

Merci d'avance.

PS : Voici le dit script, bonne lecture ;)



<br />
<h3>Envoi de mails</h3>
<br />
<?php
if ( !isset($_POST['message']) )
{
// Formulaire d'envoi du message
?>
<form method="post" action="?page=envoi_mails" enctype="multipart/form-data">
<p>
Groupe destinataire :<br />
<label><input type="radio" name="groupe" value="bonsplans" />Bons plans</label><br />
<label><input type="radio" name="groupe" value="particulier" />Particuliers</label><br />
<label><input type="radio" name="groupe" value="ce" />CE</label><br />
<br />
<label>Sujet : <input type="text" size="63" name="sujet" /></label><br /><br />
<label>Message :<br /><textarea name="message" rows='20' cols='80'/></textarea></label><br /><br />
<label>Pièce jointe 1 : <input type="file" name="fichier1" /></label><br />
<label>Pièce jointe 2 : <input type="file" name="fichier2" /></label><br />
<label>Pièce jointe 3 : <input type="file" name="fichier3" /></label><br /><br />
<input type="submit" />
<input type="reset" />
</p>
</form>
<?php
}
else
{
// Construction des en-têtes et du message
$groupe = $_POST['groupe'];
$sujet = $_POST['sujet'];
$message_html = '<html><head></head><body><p>' . nl2br($_POST['message']) . '</p></body></html>';
$limite = "----=_Part_" . md5( uniqid ( rand() ) );
$mail_mime = "MIME-Version: 1.0\r\n";
$mail_mime .= '"Content-Type: multipart/mixed;\r\n boundary=\"' . $limite . '\"\r\n"';
$mail_mime .= "From: La Tanière des Saveurs<commande@tanieredessaveurs.fr>\r\n";
$texte = "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$texte .= "Content-Transfer-Encoding: quoted-printable\n ";
$texte .= "Content-Disposition: inline \n\n ";
$texte .= $message_html;;
$texte .= "\n\n";
$texte .= "\n\n";
$i=0;
$attachement = '';
//Boucle permettant l'ajout de toutes les pièces jointes
while($i < sizeof($liste_fichier))
{
$longueur = strlen ($liste_fichier[$i]);
$longueur -=3;
if(substr($liste_fichier[$i],$longeur) == "doc")
{
$type = "application/msword";
}
elseif ( substr($liste_fichier[$i],$longeur) == "jpg" || substr($liste_fichier[$i],$longeur) == "jpeg" )
{
$type = "images/jpg";
}
$attachement .= "--".$limite."\n";
$attachement .= "Content-Type: ".$type." name=".$liste_fichier[$i]."\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=".$liste_fichier[$i]."\n\n";
$fd = fopen( $liste_fichier[$i], "rb" );
$contenu = fread( $fd, filesize( $liste_fichier[$i] ) );
$attachement .= chunk_split(base64_encode($contenu));
$i++;
}
$attachement .= "\n\n--".$limite."--\n\n";
switch ($groupe)
{
case 'bonsplans':
// On récupère la liste des destinataires
$requete = mysql_query("SELECT mail FROM Test_Mails WHERE bonsplans='o'");
// On récupère le nombre de destinataires
$req_nb = mysql_query("SELECT COUNT(*) FROM Test_Mails WHERE bonsplans='o'");
break;
case 'particulier':
$requete = mysql_query("SELECT mail FROM Test_Mails WHERE particulier='o'");
$req_nb = mysql_query("SELECT COUNT(*) FROM Test_Mails WHERE particulier='o'");
break;
case 'ce':
$requete = mysql_query("SELECT mail FROM Test_Mails WHERE ce='o'");
$req_nb = mysql_query("SELECT COUNT(*) FROM Test_Mails WHERE ce='o'");
break;
default:
echo "Vous n'avez pas sélectionné de destinataire, veuillez recommencer.";
}
$destinataire = "";
$var = 0; // Compte le nombre de destinataires déjà ajoutés
$nb_req = mysql_fetch_array($req_nb);
$nb = $nb_req['0']; // Nombre de destinataires
while ( $resultat = mysql_fetch_array($requete) or die(mysql_error()) )
{
$var++;
if ( $var == $nb ) // Une fois la liste des destinataires parcourus
{
$destinataire .= $resultat['mail'];
// Envoi du mail avec message de confirmation d'envoi ou message d'erreur
if ( mail('$destinataire',$sujet,$texte.$attachement,$mail_mime) )
{
echo "Mail envoyé." . '<br />';
}
else
{
echo "Il y a eu une erreur pendant l'envoi du mail. Veuillez recommencer.";
}
}
else // Ajout du destinataire suivant à la liste
{
$destinataire .= $resultat['mail'] . ', ';
}
}
}
?>

2 réponses

$texte .= $message_html;; je pense que deja ici il y a une erreur :)
0
Jeryagor Messages postés 11 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 25 novembre 2008
27 juin 2008 à 12:43
Ah oui, double point-virgule, effectivement... Je vais voir ce que ça donne.

Edit : ça ne change rien, il y a encore une erreur quelque part... La fonction mail n'aboutit pas.
0
StresS > Jeryagor Messages postés 11 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 25 novembre 2008
27 juin 2008 à 12:46
et moi a a ta place j'orai pas mis de ' ' dans cette ligne if ( mail('$destinataire',$sujet,$texte.$attachement,$mail_mime) )
0
Jeryagor Messages postés 11 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 25 novembre 2008 > StresS
27 juin 2008 à 12:50
Oui, j'y avais pensé également, j'ai essayé les deux mais l'erreur subsiste.

N'y a-t-il pas un moyen d'obtenir un message d'erreur complet de mail() et non simplement un booléen ? Je précise que je ne suis pas en local donc, du coup, pas possible de consulter les logs du serveur mail...
0
StresS > Jeryagor Messages postés 11 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 25 novembre 2008
27 juin 2008 à 12:52
c'est quoi l'erreur exactement ?
0
Jeryagor Messages postés 11 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 25 novembre 2008 > StresS
27 juin 2008 à 12:53
J'obtiens le message d'erreur "Il y a eu une erreur pendant l'envoi du mail. Veuillez recommencer.".
0
Jeryagor Messages postés 11 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 25 novembre 2008
30 juin 2008 à 09:35
Up please
0