Bonjour
J'ai un petit soucis d'envoi d'une news vis a vis d'un petit annuaire hébergé sous free.
Si j'envoie cette news à une cinquantaine de personnes, celle ci passe bien par contre si je veux l'envoyer à près de 1000 personnes sa plante.
Voici le message:
Voici donc le code pour qui souhaiterais mettre son nez dedans:
Merci d'avance
J'ai un petit soucis d'envoi d'une news vis a vis d'un petit annuaire hébergé sous free.
Si j'envoie cette news à une cinquantaine de personnes, celle ci passe bien par contre si je veux l'envoyer à près de 1000 personnes sa plante.
Voici le message:
J'en deduis qu'il faut que le script est un temp d'attente toute les 50 envoies (grosso modo) mais je seche.Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Apache/ProXad [May 15 2007 17:32:33] Server at ****.free.fr Port 80
Voici donc le code pour qui souhaiterais mettre son nez dedans:
Code:
<?php
//page d'accueil de l'administration de l'annuaire
include("../data_bd_annuaire.php"); //variables de l'annuaire
include("../functions.php"); //fonctions de l'annuaire
include("secure.php"); //verification de la session + connexion a la BD
// si on a pas quitte dans secure.php, on peut continuer...
//creation de le requete pour trouver l'adresse email de l'admin
$sql2 = "SELECT email_master FROM $T_infos ";
//envoi de la requete
$res2 = send_sql($sql2,"trouver les paramètres de l'annuaire");
$resultat2 = mysql_fetch_array($res2,MYSQL_ASSOC);
$titre = $_POST['titre'];
$message = $_POST['message'];
$choix = $_POST['choix'];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Envoyer une NewsLetter</title>
<style type="text/css">
<!--
.Style1 {color: #A9D8F6}
-->
</style>
</head>
<body style="background-color:#A9D8F6;">
<a href="<?php echo addsess2url("admin.php",$session_id); ?>">Retour à l'accueil de l'administration</a>
<br>
<h1 style="text-align:center;">Envoyer un mail</h1>
<center>
<form name="form1" method="post" action="">
<?php
//Si les champs ont bien été remplis
if(!empty($titre) && !empty($message) && !empty($choix))
{
$message = nl2br(htmlentities($message));
$message = stripslashes($message);
$titre = htmlentities($titre);
$titre = stripslashes($titre);
$choix = htmlentities($choix);
$email_admin = $resultat2['email_master'];
$entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: <$email_admin>\r\n";
$entete .= "Reply-To: $email_admin\r\n";
$i = 0;
$d = 0;
$doublons = array();
if($choix == 1)
{
//creation de la requete pour trouver les e-mails des sites
$sql1 = "SELECT * FROM $T_sites";
//envoi de la requete
$res1 = send_sql($sql1,"trouver le nombre de sites valides!");
//fin de la connexion
mysql_close($lk);
}
elseif($choix == 2)
{
//creation de la requete pour trouver les e-mails des sites
$sql1 = "SELECT * FROM $T_sites_in_wait";
//envoi de la requete
$res1 = send_sql($sql1,"trouver le nombre de sites en attente !");
//fin de la connexion
mysql_close($lk);
}
elseif($choix == 3)
{
//creation de la requete pour trouver les e-mails des sites
$sql1 = "SELECT * FROM $T_sites";
$sql3 = "SELECT * FROM $T_sites_in_wait";
//envoi de la requete
$res1 = send_sql($sql1,"trouver le nombre de sites valides!");
$res3 = send_sql($sql3,"trouver le nombre de sites en attente!");
//fin de la connexion
mysql_close($lk);
echo '<br>Sites en attente :<br>';
//On envoie d'abord les message au sites en attente
while ($resultat3 = mysql_fetch_array($res3,MYSQL_ASSOC))
{
$nom_site = $resultat3['titre'];
$mail = $resultat3['email_proprio'];
$doublons[$d] = $mail;
if(preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail))
{
if(!array_key_exists($mail, $doublons))
{
mail($mail,$titre, str_replace('[nomsite]', '' .$nom_site. '', $message) ,$entete);
echo 'Envoyé à ' . $mail . '<br />';
$i++;
}
else
{
echo 'Un mail é déjà été envoyé à l\'adresse : ' .$mail. '<br />';
}
}
else //S'il y à un probleme avec l'email
{
echo '<font color="#FF0000">Impossible d\'envoyer à ' .$mail. ' !</font><br />';
}
$d++;
}
echo '<br />Sites validés :<br />';
}
//Ensuite on envoie les messages
while ($resultat = mysql_fetch_array($res1,MYSQL_ASSOC))
{
$nom_site = $resultat['titre'];
$mail = $resultat['email_proprio'];
$doublons[$d] = $mail;
if(preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail))
{
if(!array_key_exists($mail, $doublons))
{
mail($mail,$titre, str_replace('[nomsite]', '' .$nom_site. '', $message) ,$entete);
echo 'Envoyé à ' . $mail . '<br />';
$i++;
}
else
{
echo 'Un mail é déjà été envoyé à l\'adresse : ' .$mail. '<br />';
}
}
else //S'il y à un probleme avec l'email
{
echo '<font color="#FF0000">Impossible d\'envoyer à ' .$mail. ' !</font><br />';
}
$d++;
}
echo '<br />Le message a été envoyé ' .$i. ' personne(s) !<br />';
}
elseif(isset($titre) || isset($message)) //Si titres et messages existent mais sont vides
{
echo 'Un des champs titre ou message n\'est pas complete !<br /><br />';
}
else
{
echo 'Veuillez completer tous les champs et selectionner un groupe de site.<br /><br />';
}
?>
<br>
Titre de la NewsLetter :<br>
<p>
<input type="text" name="titre">
</p>
<p>Votre email : <font style="color:#0099FF;"><?php echo $resultat2['email_master']; ?></font> (Pour la changer rendez-vous dans l'<a href="<?php echo addsess2url("param_annuaire.php",$session_id); ?>">administration générale</a> de l'annuaire)</p>
<p>Message :<br />
Pour afficher le nom du site de la personne qui recevra le mail , ajoutez la balise [nomsite] (avec les crochets) dans le message.</p>
<p>
<textarea name="message" cols="100" rows="15">
</textarea>
</p>
<p>Envoyer aux :<br />
<input type="radio" name="choix" value="1">
sites déjà validés<br>
<input type="radio" name="choix" value="2">
sites en attente<br>
<input type="radio" name="choix" value="3">
les deux
</p>
<p>
<input type="submit" name="Submit" value="Envoyer">
<br />
</p>
</form>
<br />
</center>
</body>
</html>