Page 1 sur 1

fonction mail(), compatibilité yahoo, hotmail et autres

Posté : 28 oct. 2005, 19:22
par cguibs
Bonjour,

Je sais que plusieurs post parlent du même sujet. mais je n'arrive pas à le faire fonctionner.
je bâtis un newsletter. le problème est que yahoo, hotmail et même les fai ne transmette pas le message.
voici le code:

Code : Tout sélectionner

<? $connexion = mysql_connect('localhost','log','pass'); $base = mysql_select_db('nomDB'); $site = 'Espace Nature - Portet'; $mail_admin = 'NOREPLY@monserveur'; $entete = "From: \"$site\" <$mail_admin>\n"; $entete .= "X-Sender: <$mail_admin>\n"; $entete .= "X-Mailer: PHP\n"; $entete .= "Return-Path: <$mail_admin>\n"; $entete .= "Content-Type: text/html; charset=iso-8859-1\n"; $format = 'HTML'; $message_final = "<body> $message_final </body>"; $sql = "SELECT email FROM `newsletter`"; $req = mysql_query($sql); while ($data = mysql_fetch_array($req)) { mail($data['email'],$sujet_final,$message_final,$entete); echo "<center><b>".$data['email']." a reçu l'email ! \n"; } ?>

je débute en php et je n'aime pas posté pour rien mais là, il faut m'expliquer...
merci à tous

Posté : 28 oct. 2005, 21:56
par Cyrano
As-tu des messages d'erreur ? Il n'y a pas de test dans ton script. Et où est donc défini le message ? Ta variable $message_final n'est initialisée nulle part.
On va commencer avec le nettoyage du code et ajouter un test sur l'envoi :
<?php
$connexion  = mysql_connect('localhost','log','pass');
$base       = mysql_select_db('nomDB');
$site       = 'Espace Nature - Portet';
$mail_admin = 'NOREPLY@monserveur';

$entete  = "From: ". $site ." <". $mail_admin .">\r\n";
$entete .= "X-Sender: <". $mail_admin .">\r\n";
$entete .= "X-Mailer: PHP\r\n";
$entete .= "Return-Path: <". $mail_admin .">\r\n";
$entete .= "Content-Type: text/html; charset=iso-8859-1\r\n";

$format = 'HTML';

$message_final = "<body>". $message_final ."</body>";

$sql = "SELECT email FROM `newsletter`";
$req = mysql_query($sql);

while ($data = mysql_fetch_array($req))
{
    if(mail($data['email'],$sujet_final,$message_final,$entete))
    {
        echo "<center><b>".$data['email']." a reçu l'email ! \n";
    }
    else
    {
        echo "<center><b>L'envoi à ".$data['email']." a échoué ! \n";
    }
}
?>

Posté : 28 oct. 2005, 23:00
par cguibs
j'ai fait ce que tu m'as dit. c'est toujours la meme chose. de plus, est-ce que c'est posible qu'en faisant des tests avec mon serveur, ca a bousillé le fonctionnent de mail()??

Posté : 28 oct. 2005, 23:01
par Cyrano
non : quels messages as-tu en retour: l'exécution normale de l'envoi ? ou bien le message d'échec que j'ai ajouté ?

Posté : 29 oct. 2005, 08:59
par Vaedan
Bonjour.
Je pense que le probleme vient du fait que ton message est considéré comme un SPAM (donc un courrier indésirable). Je te suggère de revoir les entetes de ton mail.

Posté : 29 oct. 2005, 16:34
par cguibs
le message est envoyé. il n'y a aucun message d'erreur

Posté : 30 oct. 2005, 19:41
par Manio 54
[resolu] ??? Non ???

Posté : 31 oct. 2005, 05:23
par cguibs
non résolu car il est soit disant envoyé mais rien n'est reçu!!!! :?
je commence à être perdu.
sur un autre foru, on m'A dit que c'Est un pb de serveur???

Posté : 31 oct. 2005, 09:45
par Manio 54
Quel est ton hébergeur ?

Spam

Posté : 31 oct. 2005, 09:48
par nicolas
Je pense que le probleme vient du fait que ton message est considéré comme un SPAM (donc un courrier indésirable). Je te suggère de revoir les entetes de ton mail.
Ton problème n'est plus lié directement à PHP. Il ne te reste plus qu'à comprendre pourquoi tes messages sont considérés comme des spams par certains.

Posté : 31 oct. 2005, 09:56
par Manio 54
Juste pour info, je me demande à quoi sert la variable $format
$entete .= "X-Mailer: PHP\r\n";
$entete .= "Return-Path: <". $mail_admin .">\r\n";
$entete .= "Content-Type: text/html; charset=iso-8859-1\r\n";

$format = 'HTML';//---> celle la !

$message_final = "<body>". $message_final ."</body>";