Aller au contenu

Sujets conseillés

Posté

Bonjour,

Je suis occupé à développer une application pour envoyé un mail par le biais d'un formulaire à plusieurs destinataires.

Les adresses e-mail proviennent d'une base de donnée

Voici mon code source :

$connect = mysql_connect ($server,$id,$mdp);

$data = mysql_select_db ($db,$connect);

$sql = "SELECT prospect_email FROM prospect WHERE prospect_group='Test'";

$result = mysql_query ($sql);

$compte = mysql_num_rows ($result);

if(isset($_POST['SendCampaign'])){

$To = $_POST['To'];

$Subject = "Test d'envoie de mail multiple";

$Msg = "Ceci est mailing test d'envoie à plusieur adresse en même temps";

$head = "From: \"Domaine \"<noreply_AT_domaine.be>\n";

$head .= "Content-Type: text/html; charset=\"iso-8859-1\"";

$SendMessage = mail($To,$Subject,$Msg,$head);

if($SendMessage==true){

echo "Le message à bien été envoyer";

}else{

echo "Impossible d'envoyer le message";

}

}

j'ai déjà fais des recherches sur google fais divers test d'après le(s) code(s) indiqué(s), mais rien de concluant

d'après certaine personne il est question de faire une boucle WHILE, d'autre une boucle FOR, j'avoue être un peu paumé!!

merci de votre aide

Posté

"Rien de concluant", c'est-à-dire ? ça ne fonctionne pas, il y a un message d'erreur ?

Ton code semble effectivement pas terminé...

while ( $res = mysql_fetch_array($result) ) {
$SendMessage = mail($res["prospect_email"],$Subject,$Msg,$head);
if($SendMessage==true)
echo "Message envoyé à ".$res["prospect_email"];
else
echo "Impossible d'envoyer le message à ".$res["prospect_email"];
}

Bon par contre, pour 50 destinataires ça va, mais plus tu risques un timeout du script, et puis ça va être dur à gérer.?

Regarde du côté des scripts tout fait genre phpMailer.

Posté

Super, merci de ton aide, je viens de modifier le code et de faire un test et c'est ok je mets le code ici pour les prochains qui rencontrerais le même problème :

<?php
$connect = mysql_connect ($server,$id,$mdp);
$data = mysql_select_db ($db,$connect);
$sql = "SELECT prospect_email FROM prospect WHERE prospect_group='Test'";
$result = mysql_query ($sql);

if(isset($_POST['SendCampaign'])){
$res = $result;
$Subject = "Test d'envoie de mail multiple";
$Msg = "Ceci est mailing test d'envoie à plusieur adresse en même temps";
$head = "From: \"Domaine \"<nom_AT_domaine.be>\n";
$head .= "Content-Type: text/html; charset=\"iso-8859-1\"";

while ( $res = mysql_fetch_array($result) ) {
$SendMessage = mail($res["prospect_email"],$Subject,$Msg,$head);
if($SendMessage==true)
echo "Message envoyé à ".$res["prospect_email"];
else
echo "Impossible d'envoyer le message à ".$res["prospect_email"];
}
}
?>

pour info j'avais omis de dire que je travaillais en local pour l'envoie des mails, j'avais donc modifier les paramètres mail function du fichier php.ini voir ci-dessous :

mail function]
; For Win32 only.
SMTP = smtp.domain.be
smtp_port = 25

; For Win32 only.
;sendmail_from = nom_AT_domaine.be

donc cette ligne du code dois absolument avoir le même valeur quel celle indiquer dans le fichier php.ini

$head = "From: \"Domaine \"<nom_AT_domaine.be>\n";

encore merci

Posté

Le paramétrage dépend du serveur SMTP... le sendmail_from n'est pas à renseigner quand tu utilises SMTP, il faut avoir un sendmail installé qui n'est pas livré avec Windows.

Et comme je le disais, si le temps d'envoi dépasse le temps maxi d'exécution d'un script, l'envoi s'arrêtera. Il serait bon par exemple de mettre à jour un champ pour savoir à qui on a déjà envoyé pour pas faire de doublon...

Ce script est OK si on a une petite centaine d'adresses...

Posté

J'utilise htmlmimemail5 comme librairie pour les mails et ça le fait très bien donc tu peux consulter le code source de la lib ou bien l'utiliser directement.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...