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

Petit nouveau ! | 4 Messages

28 oct. 2005, 19:22

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

Mammouth du PHP | 19672 Messages

28 oct. 2005, 21:56

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";
    }
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

28 oct. 2005, 23:00

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()??

Mammouth du PHP | 19672 Messages

28 oct. 2005, 23:01

non : quels messages as-tu en retour: l'exécution normale de l'envoi ? ou bien le message d'échec que j'ai ajouté ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 493 Messages

29 oct. 2005, 08:59

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.

Petit nouveau ! | 4 Messages

29 oct. 2005, 16:34

le message est envoyé. il n'y a aucun message d'erreur

Eléphant du PHP | 199 Messages

30 oct. 2005, 19:41

[resolu] ??? Non ???

Petit nouveau ! | 4 Messages

31 oct. 2005, 05:23

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???

Eléphant du PHP | 199 Messages

31 oct. 2005, 09:45

Quel est ton hébergeur ?

Eléphant du PHP | 353 Messages

31 oct. 2005, 09:48

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.

Eléphant du PHP | 199 Messages

31 oct. 2005, 09:56

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>";