Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/05/2011, 21h09   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut un envoi de mail PHP qui ne marche PRESQUE nul part

Bonsoir,

j'ai testé une fonction d'envoi de mail toute bête :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php 
$destinataire = "---";
$sujet ="test";
$message = "test";
$em="---";
 
   $headers  = "MIME-Version: 1.0 \n";
   $headers .= "Content-type: text/html; charset=iso-8859-1 \n";
   $headers .= "From: $em  \n";
   $headers .= "Disposition-Notification-To: $em  \n";
 
   // Message de Priorité haute
   // -------------------------
   $headers .= "X-Priority: 1  \n";
   $headers .= "X-MSMail-Priority: High \n";
 
 
 
 
mail($destinataire,
     $sujet,
     $message,
     $headers);
?>
mais elle ne marche (le mail arrive) que chez un seul hébergeur sur 4 : pourquoi ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 08h46   #2
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Tu as essayé en enlevant un à un les headers afin de voir celui qui n'était pas très accepté ?
Pour ma part j'aurai un penchant pour tester sans la priorité.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 09h30   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Non, c'est vrai que je n'y avais pas pensé : chez l'un des hébergeurs, c'est le from qui coince (et pas la priorité)(ce qui est un peu gênant...) et chez un autre, même sans aucun header, pas de mail...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 09h38   #4
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Certains hébergeurs n'autorisent pas l'envoi de mail si le from n'est pas une adresse de leur hébergement (et qui existe).

Pour ton dernier... Beh à part vérifier si la fonction mail est bien activée et sinon voir avec le support.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 10h41   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pourquoi "Message de Priorité haute" ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 10h53   #6
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
juste par habitude (copier-coller), mais comme ce n'est pas ça qui coince...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 12h36   #7
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Je pense que tu as tous les headers que les serveurs mails détestent...
L'envoi de mail à répétition avec une priorité haute ouvre la porte au blacklistage de l'ip de ton serveur d'envoi.
Il en va de même pour la demande d'accusé de réception (Disposition-Notification-To) surtout si ce champ est accompagné de "---" ou d'une adresse imaginaire (test@example.com par exemple) ou d'une adresse blacklistée ou enfin d'une adresse ne provenant pas du même serveur que l'envoi.

Citation:
Certains hébergeurs n'autorisent pas l'envoi de mail si le from n'est pas une adresse de leur hébergement (et qui existe).
+1 pour transgohan mais pas que pour l'envoi.

A la réception, les serveurs font plusieurs vérifications pour admettre le mail à la réception. Il y a, par exemple, la vérification SPF qui vérifie que l'adresse expéditeur appartient bien au domaine du serveur d'envoi. (genre un mail from test@gmail.com mais envoyé par le SMTP de yahoo, ça passe mal)

Sachant que les listes noires sont souvent communes à plusieurs serveurs mail et que les envois via PHP sont souvent observés de près par les hébergeurs, calmez-vous sur les headers "folkloriques", suivez les bonnes pratiques en vigueur et tout ira bien.
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/05/2011, 15h46   #8
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Et si je limite le header à "", c'est fantaisiste ? En tout cas, ça ne marche pas non plus...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 15h59   #9
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Oui, c'est fantaisiste.
Avec vous, c'est tout ou rien, non ?
Pas de headers, c'est pour le serveur recevant tout aussi louche que les autres cas évoqués plus tôt.
Imaginez, vous recevez un colis louche, sans expéditeur ni aucune marque, ça vous paraît bizarre? Bah, là c'est pareil. Un email sans header "from", c'est souvent refusé.

Personnellement, je considère qu'il faut au minimum :
  • From (qui doit correspondre au domaine du serveur d'envoi ! Par exemple, si vous êtes sur le serveur example.com, il faut mettre une adresse example@example.com et pas example@test.com)
  • Reply-to (qui elle, peut être n'importe laquelle)

Par exemple :
Code :
1
2
3
4
$headers .= "From: $auteur\n";
$headers .= "X-Mailer: PHP ".phpversion()."\n";
$headers .= "Reply-To: $auteur@phpeasy.com\n";
mail ($destinataire,$subject,$message,$headers);
Peuvent s'ajouter le mime et l'encodage mais c'est souvent seulement si le mail est en html.

Maintenant, même si vous ajoutez ces headers, rien n'assure la délivrabilité de l'email si vous êtes en localhost ou en mutualisé et que vous (avez essayé) essayez toujours sur le même serveur de réception. L'ip du serveur d'envoi pouvant être blacklisté ou semblant louche pour le serveur recevant.
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h06   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pourquoi X-Mailer: PHP ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h20   #11
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
X-mailer est l'identifiant de l'application envoyant le mail.
Si vous regardez les en-têtes complètes des mails que vous recevez, il est toujours présent avec, par exemple, "Outlook" (Microsoft Office Outlook 12.0) "Thunderbird" (Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10), "PHP", etc...
Bien sûr, on peut y mettre ce qu'on veut. Par exemple, les créateurs de redmine, on décidé de mettre X-mailer: redmine tout simplement.
J'ai pour habitude de le mettre car, comme de nombreux confrères dans ma boîtes, j'utilise un add-on qui "iconise" l'application expéditrice (c'est beaucoup plus beau ).

Cet en-tête n'est pas obligatoire et, je pense (mais il faudrait tester) que la fonction "mail()" de PHP en place un par défaut.

Il faut juste prendre en compte que, plus on montre patte-blanche, mieux sera la délivrabilité du mail. Si on n'a pas accès au paramétrage complet du serveur, je penche pour : soit l'utilisation de celui-ci par défaut (risqué mais simple à mettre en place pour les "débutants") soit l'utilisation d'un serveur SMTP "relai" (compliqué à mettre en place mais souvent plus fiable pour les envois de "non-masse")

Vous pouvez avoir de bons conseils pour l'envoi de mail en masse ici. Ces conseils (que ce soit au niveau conf, que marketing) sont plutôt pour les avoir testés moi-même. L'objet du mail, le contenu, le HTML, les conf, pas mal de choses y est.
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h29   #12
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
effectivement, j'ai mis :
Code :
1
2
3
4
5
6
7
8
9
10
 
$from="---@nom_domaine";
$em="---";
 
$headers="";
 
  $headers  .= "MIME-Version: 1.0 \n";
   $headers .= "Content-type: text/html; charset=iso-8859-1 \n";
   $headers .= "From: $from  \n";
    $headers .= "Reply-To: $em\n";
et c'est bien arrivé. (et sans X-Mailer)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h33   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Shikiryu Voir le message
X-mailer est l'identifiant de l'application envoyant le mail.
je sais bien...
c'est juste que c'est inutile et qu'en plus ça donne une indication sur la version du serveur, donc un risque niveau sécurité


il faut aussi bien attention que le mail.add_x_header soit sur Off
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h56   #14
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Citation:
Envoyé par laurentSc Voir le message
et c'est bien arrivé. (et sans X-Mailer)
Voilà qui est plus clean.
Comme je l'ai dit, X-mailer n'est pas indispensable.
Peux-tu regarder quel est le X-mailer du mail que tu as reçu via ton script ?

Citation:
Envoyé par stealth35 Voir le message
je sais bien...
c'est juste que c'est inutile et qu'en plus ça donne une indication sur la version du serveur, donc un risque niveau sécurité

il faut aussi bien attention que le mail.add_x_header soit sur Off
Super. Un hacker même débutant, n'a pas réellement besoin de connaitre la version PHP du serveur pour... faire ce qu'il a à faire. Au mieux, il gagne 10 min.
Et c'est loin d'être inutile de dire que le mail vient d'un script PHP (on n'est effectivement pas obligé de donner la version, c'était un exemple)
Quant à mail.add-x-header, il est, chez les hébergeurs sérieux, automatiquement à off. (C'est mieux de vérifier, mais chez les miens, ils ne sont pas présents)
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 17h05   #15
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Shikiryu Voir le message
Super. Un hacker même débutant, n'a pas réellement besoin de connaitre la version PHP du serveur pour... faire ce qu'il a à faire. Au mieux, il gagne 10 min.
moi je laisse la porte ouverte de chez moi puisque de tout façon un voleur "même débutant, n'a pas réellement besoin de connaitre le type de le serrure de la porte pour... faire ce qu'il a à faire. Au mieux, il gagne 2 sec."

c'est ridicule comme raisonnement...
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 18h09   #16
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
J'aime beaucoup les gens qui ne lisent que ce qui les intéressent.

Les mots "exemple" et "n'est pas indispensable" passent totalement à la trappe sur ce forum
J'ai quand même répondu plus qu'en détails au niveau de l'envoi de mail (que ce soit en PHP ou autre, ce n'était pas un problème dû au langage mais à la compréhension de ce qu'à besoin un email pour bien passer, je ne voulais pas approfondir la technique plus que ça.)

Heureusement que l'OP a pris ça en compte et... a résolu son problème grâce à ça.

Après ton analogie est peu appropriée. Donner la version utilisée de PHP dans un email, c'est bien la moindre des préoccupations niveau sécurité dans PHP (contrairement à la marque de la serrure ou de laisser "la porte ouverte"). Bien sûr, on peut s'en passer mais, encore une fois, c'était un exemple et j'ai donné sa signification après ta demande, l'OP en fait ce qu'il veut.

Merci zorro.
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h38.


 
 
 
 
Partenaires

Hébergement Web