WampServer

Apache, PHP, MySQL on Windows 

 
  • Accueil forum
  • Retour à WampServer
  • presentation
  • Download
  • Addons
  • Formations
  • Alter Way

 
Voir le sujet: Précédent•Suivant
Aller à : Liste des Forums•Liste des messages•Nouvelle discussion•Recherche•Connexion•Imprimer la vue
Utilisation en local de la fonction amil de PHP
Envoyé par: YD (---.w90-44.abo.wanadoo.fr)
Date: 19 September 2018 à 14:22

Bonjour

Installation et utilisation normale en test local de la dernière version de Wampserver récemment installée.

Windows 7 32 bits - Wampserver 3.1.3 32 bits - Version Apache 2.4.34 - Version PHP 7.2.9 - Version MySQL 5.7.23 - Version MariaDB 10.3.8

Icône Wampserver verte
.
Lignes actives du ichier c:\Windows\System32\drivers\etc\hosts (partie utile) :
127.0.0.1 localhost
::1 localhost

127.0.0.1 Tests
::1 Tests

Accès à localhost et aucun message d'erreur en bas de page
Accès à phpMyAdmin
Antivirus BitDefender
Chemin complet de l'installation de Wampserver : C:\wamp\

Je n'ai pas de problème à mon stade (de débutant) d'utilisation de Wampserver. J'ai essayé, enfin avec succès, un envoi de mail à plusieurs de mes adresses mails.
Toutefois, j'ai beaucoup galéré pour l'utilisation en local de la fonction Mail intégrée dans PHP et j'avoue que la consultation des nombreux échanges sur ce sujet ne m'ont que moyennement aidé.
J'ai donc effectué mes propres tests.

Mon script de tests :

?php

ini_set("SMTP", "smtp.orange.fr"winking smiley ; // aucun autre SMTP ne marche
ini_set("sendmail_from", "XXX@hotmail.fr"winking smiley ; // Il faut une adresse avec un nom de F.A.I. valide (orange.fr, free.fr...) mais n'importe quoi avant @
$from = "nimportequoi";
$to = "adressedestinataire"; // L'adresse doit être valide
$subject = "Vérification PHP mail";
$message = "PHP mail marche";
$headers = "From:" . $from;

mail($to,$subject,$message, $headers);

/* La clause From, figurant dans l'en-tête du message envoyé, peut être quelconque et différente du paramètre sendmail_from. */

echo "L'email a été envoyé.";
?>


Ce script fonctionne correctement et le mail est bien envoyé.

Je vous fais part ici des résultats des nombreux tests que j'ai effectués :
- je n'ai pas changé le port 25 indiqué dans php.ini

- je n'ai pas touché à php.ini mais j'ai paramétré SMTP par un ini_set
- seul le paramètrage SMTP = "smtp.orange.fr" marche (j'ai essayé les principaux autres SMTP : La Poste, gmail, hotmail, Yahoo, Free, SFR ... sans succès)
- le paramètre sendmail_from n'est que partiellement contrôlé (au niveau du domaine du FAI mais pas de l'adresse personnelle qui peut donc être quelconque)
- la clause From figurant dans le header de la fonction mail n'est ni contrôlée ni utilisée
- seule la cluase to doit correspondre à une adresse mail valide.

Questions :

- Confirmez-vous l'exactitude de mes observations ?
- Pourquoi seul le SMTP d'Orange marche et aucun autre ?
- Pourquoi la fonction mail n'utilise pas le paramètre sendmail_from mais une clause From qui ne semble donner lieu à aucun contrôle (au moins en local) ?
- Quels contrôles supplémentaires sont faits sur un serveur extérieur par rapport à ceux effectués en local ?

Merci de vos réponses !

Options: Répondre•Citer ce Message
Re: Utilisation en local de la fonction amil de PHP
Envoyé par: Otomatic (Modérateur)
Date: 19 September 2018 à 14:51

Bonjour,

> Confirmez-vous l'exactitude de mes observations ?
Je n'utilise jamais directement la fonction mail de PHP.
J'utilise la class PhpMailer avec un SMTP authentifié d'un de mes FSI.

> Pourquoi seul le SMTP d'Orange marche et aucun autre ?
Parce que c'est le seul que vous avez le droit d'utiliser vu que vous êtes chez Orange (C'est votre FSI, Fournisseur de Services Internet)
Vous ne pouvez utiliser qu'un SMTP pour lequel vous êtes connu et enregistré avec nom utilisateur et mot de passe.

> Pourquoi la fonction mail n'utilise pas le paramètre sendmail_from mais une clause From
> qui ne semble donner lieu à aucun contrôle (au moins en local) ?
Ce genre de question est à poser chez PHP

> Quels contrôles supplémentaires sont faits sur un serveur extérieur par rapport à ceux effectués en local ?
Ça dépend essentiellement du serveur utilisé.

------------------------------------------------------------------------------------------------------------
Wampserver 3.1.7 32 bit - Apache 2.4.38 - PHP 7.3.2/7.2.15/7.1.26/7.0.33/5.6.40 - MySQL 5.7.25 - MariaDB 10.3.12
Wampserver 3.1.7 64 bit - Apache 2.4.38 - PHP 7.3.2/7.2.15/7.1.26/7.0.33/5.6.40 - MySQL 5.7.25/8.0.14 - MariaDB 10.3.12
PhPMyadmin 4.8.5 - MysqlDumper 1.24.5
on W10 and W7 Pro 64 bit
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons
« Ce n'est pas parce qu'ils sont nombreux à avoir tort, qu'ils ont forcément raison. Coluche »
« It's not because they are many to be wrong, they are necessarily right. Coluche »

Options: Répondre•Citer ce Message
Re: Utilisation en local de la fonction amil de PHP
Envoyé par: YD (---.w90-44.abo.wanadoo.fr)
Date: 19 September 2018 à 16:10

Bonjour,

Merci de vos réponses rapides !

> Confirmez-vous l'exactitude de mes observations ?
Je n'utilise jamais directement la fonction mail de PHP.
J'utilise la class PhpMailer avec un SMTP authentifié d'un de mes FSI.

J'ai fait une petite recherche et ai compris les dangers de l'utilisation directe de mail :
[cp.espace2001.com]
ce qui confirme bien mes propres expérimentations - dans mail - sur l'absence de contrôle de l'émetteur des messages.
Conclusion : on a tout intérêt à utiliser une fonction beaucoup plus sécurisée, PHPMailer semblant être une alternative préférée.


> Pourquoi seul le SMTP d'Orange marche et aucun autre ?
Parce que c'est le seul que vous avez le droit d'utiliser vu que vous êtes chez Orange (C'est votre FSI, Fournisseur de Services Internet)
Vous ne pouvez utiliser qu'un SMTP pour lequel vous êtes connu et enregistré avec nom utilisateur et mot de passe.

Effectivement je faisais la confusion avec mes fournisseurs de messagerie (La Poste et Yahoo en plus d'Orange). J'ai bien compris que c'est le fournisseur de la box internet qui détermine mon SMTP.

> Quels contrôles supplémentaires sont faits sur un serveur extérieur par rapport à ceux effectués en local ?
Ça dépend essentiellement du serveur utilisé.

Le lien cité plus haut montre que WordPress ne faisait pas grand chose en la matière ...

Merci encore !
YD

PS : Je n'ai pas bien identifié le problème, mais j'ai bien crû ne pas pouvoir vous envoyer mon premier message, la page d'envoi m'affirmant (bien sûr à tort) que le contrôle anti-spam n'était pas concluant. Peut-être le non respect de l'ordre de saisie et de validation ?
Je

Options: Répondre•Citer ce Message
Re: Utilisation en local de la fonction amil de PHP
Envoyé par: YD (---.w90-44.abo.wanadoo.fr)
Date: 19 September 2018 à 16:24

Mes excuses pour le lien erronné (résultat sans doute du BBCode du forum ??) ! Voici le bon :

cp.espace2001.com/announcements.php?id=14

Mes excuses aussi pour ne pas utiliser - si cela est à notre portée - les balises adéquates dans le texte (que j'ignore et que je ne sais où trouver). Je ne suis qu'un pauvre débutant !

YD

Options: Répondre•Citer ce Message
Re: Utilisation en local de la fonction amil de PHP
Envoyé par: Otomatic (Modérateur)
Date: 19 September 2018 à 18:29

Bonjour,

> J'ai bien compris que c'est le fournisseur de la box internet qui détermine mon SMTP.
Dans votre cas, oui, puisque votre FAI est aussi votre FSI.
Ne confondez pas FAI = Fournisseur d'Accès Internet (RTC, ADSL, Fibre, etc. connexion matérielle au réseau Internet) et FSI = Fournisseur de Services Internet (Mail, Usenet, hébergement, etc.)
Par exemple, mon FAI est Free mais mon FSI est Gandi et lorsque j'utilise un SMTP, c'est celui de chez Gandi.

Le BBcode interne du forum par des balises “classiques” : (Espace intentionnel à l'intérieur des balises)
[ b] gras [ /b] [ i] italique [ /i] [ u] souligné [ /u]
gras italique souligné
[ code] lignes de code [ /code]
lignes de code
lignes de code
Une image [ img] url sur l'image [ /img]

[ url= url ] texte [ /url]
http://wampserver.aviatechno.net

Attention, une url tapée sans précautions est interprétée comme une url cliquable et est tronquée.
Pour rester en texte, il faut soit l'encadrer par des apostrophes, soit mettre un espace dans http
'http://wampserver.aviatechno.net' ou h ttp://wampserver.aviatechno.net

------------------------------------------------------------------------------------------------------------
Wampserver 3.1.7 32 bit - Apache 2.4.38 - PHP 7.3.2/7.2.15/7.1.26/7.0.33/5.6.40 - MySQL 5.7.25 - MariaDB 10.3.12
Wampserver 3.1.7 64 bit - Apache 2.4.38 - PHP 7.3.2/7.2.15/7.1.26/7.0.33/5.6.40 - MySQL 5.7.25/8.0.14 - MariaDB 10.3.12
PhPMyadmin 4.8.5 - MysqlDumper 1.24.5
on W10 and W7 Pro 64 bit
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons
« Ce n'est pas parce qu'ils sont nombreux à avoir tort, qu'ils ont forcément raison. Coluche »
« It's not because they are many to be wrong, they are necessarily right. Coluche »

Options: Répondre•Citer ce Message
Re: Utilisation en local de la fonction amil de PHP
Envoyé par: Artemus24 (---.70.16.109.rev.sfr.net)
Date: 19 September 2018 à 23:38

Salut à tous.

>>> ini_set("SMTP", "smtp.orange.fr"winking smiley ; // aucun autre SMTP ne marche

A vrai dire, ce n'est pas tout à fait vrai.
Vous avez le choix entre ceux proposés par votre FAI, mais rien ne vous empêche d'utiliser un autre fournisseur de serive.

Pour ce qui concerne orange, vous avez le choix entre orange et wanadoo. Pourquoi ?
Parce que ce sont apartenant à orange. Je suis chez SFR et j'utilise smtp.neuf.fr.

Sinon, j'ai un nom de domaine, et j'utilise pour mon outlook, le serveur de chez Alwaysdata.

>>> ini_set("sendmail_from", "XXX@hotmail.fr"winking smiley ; // Il faut une adresse avec un nom de F.A.I. valide (orange.fr, free.fr...) mais n'importe quoi avant @

Ce n'est pas tout à fait vrai, non plus.
Vous devez utiliser l'adresse email qui est connu chez orange et non une autre adresse qui ne vous appartient pas.

>>> $from = "nimportequoi";

Il n'y a pas de contrôle et donc on peut mettre n'importe quelle adresse source.

>>> $to = "adressedestinataire"; // L'adresse doit être valide

Cela va de soi sinon votre courrier n'arrive jamais chez son destinataire.

>>> je n'ai pas changé le port 25 indiqué dans php.ini

J'utilise encore le port 25 qui est le plus simple à gérer, sauf que tout ce que vous envoyez est lisible sur le net.
Il faudrait mieux utiliser les autres port, comme le 587, mais cela nécessite de vous identifier.

>>> je n'ai pas touché à php.ini mais j'ai paramétré SMTP par un ini_set

Il vaut mieux configurer votre php.ini si vous utilisez toujours le même paramétrage.
D'autant que dans votre script, vous indiquez vos paramètres, et certainement vos mots de passe. Pas très malin !

>>> le paramètre sendmail_from n'est que partiellement contrôlé (au niveau du domaine du FAI mais pas de l'adresse personnelle qui peut donc être quelconque)

C'st normal car vous utilisez le port 25. Si vous devez vous identifier, utiliser le port 587.

>>> la clause From figurant dans le header de la fonction mail n'est ni contrôlée ni utilisée

On peut mettre ce que l'on veut.

>>> Pourquoi seul le SMTP d'Orange marche et aucun autre ?

Avez-vous testé smtp.wanadoo.fr ?

>>> Pourquoi la fonction mail n'utilise pas le paramètre sendmail_from mais une clause From qui ne semble donner lieu à aucun contrôle (au moins en local) ?

C'est faux ce que vous dites. sendmail_from est utilisé car seul votre adresse email à vous qui est identifié chez votre fai est valide.
Le problème, c'est que vous utilisez le port 25 où aucun contrôle n'est pas. Dans le cas du port 587, c'est obligatoire.

>>> Conclusion : on a tout intérêt à utiliser une fonction beaucoup plus sécurisée, PHPMailer semblant être une alternative préférée.

Pas nécessairement car tout dépend de ce que vous désirez faire.
Pour mon site, j'utilise mail car c'est basique et je n'ai pas besoin de plus.
J'ai testé phpmail, puisque c'est Otomatic qui me l'a fait découvert.
Pour le client messagerie, j'utilise outlook qui est compris dans microsoft office pro.

Attention : il se peut que le port 25 soit devenu obsolète car non sécurisé.

@+

----------------------------------------------------------------------------------------------------------------------------------------------------------------
Mon site : [www.jcz.fr]

Options: Répondre•Citer ce Message
Re: Utilisation en local de la fonction amil de PHP
Envoyé par: YD (---.w90-44.abo.wanadoo.fr)
Date: 21 September 2018 à 15:12

Bonjour Otomatic et Artemus !

Otomatic ==>

> J'ai bien compris que c'est le fournisseur de la box internet qui détermine mon SMTP.
Dans votre cas, oui, puisque votre FAI est aussi votre FSI.
Ne confondez pas FAI = Fournisseur d'Accès Internet ... et FSI = Fournisseur de Services Internet (Mail, Usenet, hébergement, etc.)


D'accord, mais quand j'utilise plusieurs messageries (Orange, La Poste, Yahoo), ce sont bien des services internet et leurs producteurs des F.S.I. ? Donc, en utilisant les SMTP de l'un ou l'autre de ces FSI, cela devrait fojnctionner ? C'est pour cela que j'évoquai ma box internet qui est fournie par Orange car il n'y a qu'avec le SMTP d'Orange (et de Wanadoo) que la fonction mail fonctionne.

Artemus ==>

>>> ini_set("sendmail_from", "XXX@hotmail.fr" ; // Il faut une adresse avec un nom de F.A.I. valide (orange.fr, free.fr...) mais n'importe quoi avant @

Ce n'est pas tout à fait vrai, non plus.
Vous devez utiliser l'adresse email qui est connu chez orange et non une autre adresse qui ne vous appartient pas.


Je me situe dans le cadre d'un "bête" essai en local et pense à tous ceux qui, débutants comme moi, n'arrivent pas à faire marcher leur mail en local. Autrement dit, j'ai voulu mettre en exergue, en local, les "libertés" qu'on avait de mettre n'importe quoi tout en ayant un fonctionnement correct de la fonction mail de PHP. Dans mon cas, j'ai fait exprès de prendre l'opérateur Hotmail chez qui je n'ai aucun compte. Bien sûr que, "en vrai", je ne vais pas s'amuser à faire ce que j'ai fait !

En revanche, pour que les choses soient bien claires : mon F.A.I. est bien Orange mais j'utilise des messageries chez divers opérateurs comme indiqué ci-dessus. Donc, "en vrai", je devrais pouvoir utiliser n'importe laquelle de ces adresses mail valides.


>>> je n'ai pas changé le port 25 indiqué dans php.ini

J'utilise encore le port 25 qui est le plus simple à gérer, sauf que tout ce que vous envoyez est lisible sur le net.
Il faudrait mieux utiliser les autres port, comme le 587, mais cela nécessite de vous identifier.


Il me semble qu'on ne peut utiliser la fonction mail si on doit s'identifier ? Car s'identifier signifie utiliser le protocole SMTP avec authentification (ASMTP) c'est à dire fournir mon adresse mail + mon mot de passe, ce que mail ne semble pas gérer.
Est-ce que cela signifie aussi que, pratiquement, on ne peut utiliser que le port 25 avec la fonction mail ??

>>> Pourquoi seul le SMTP d'Orange marche et aucun autre ?
Avez-vous testé smtp.wanadoo.fr ?


J'ai testé et il marche aussi. Mais, comme je l'ai déjà dit, il n'y a que ces 2 SMTP qui fonctionnent !

>>> Pourquoi la fonction mail n'utilise pas le paramètre sendmail_from mais une clause From qui ne semble donner lieu à aucun contrôle (au moins en local) ?

C'est faux ce que vous dites. sendmail_from est utilisé car seul votre adresse email à vous qui est identifié chez votre fai est valide.


Je parlais bien en utilisation locale. J'ai fait des tests complémentaires et vous précise les résultats obtenus :
Les trois paramétrages suivants :
- sendmail-form ="XXX@free.fr" et paramètre $headers inutilisé
OU
- sendmail-form ="XXX@free.fr" et $from='nimportequoi' dans $headers (utilisé)
OU
- sendmail-from vide et $from="XXX@free.fr' dans $headers utilisé
fonctionnent parfaitement.
J'en déduis que la fonction mail teste d'abord sendmail_from.
- s'il est renseigné, elle ignore $from. (et le $headers ?) et c'est le paramètre sendmail_from qui apparaît bien dans le 'From' du mail envoyé
- s'il n'est pas renseigné, elle utilise $from.
Ceci explique que, ayant renseigné;sendmail_from dans le script que je vous ai envoyé, je pouvais bien mettre n'importe quoi dans $from....

Le problème, c'est que vous utilisez le port 25 où aucun contrôle n'est pas. Dans le cas du port 587, c'est obligatoire.

Pour le choix du port 587, je vous ai écrit ci-dessus que je n'ai pas vu la possibilité de l'utiliser avec mail ... Si vous me dites que c'est possible, j'aimerais savoir comment faire !

Merci encore de votre intérêt à tous deux !
YD

Options: Répondre•Citer ce Message
Re: Utilisation en local de la fonction amil de PHP
Envoyé par: Otomatic (Modérateur)
Date: 21 September 2018 à 16:02

Bonjour,

Citation
YD
D'accord, mais quand j'utilise plusieurs messageries (Orange, La Poste, Yahoo), ce sont bien des services internet et leurs producteurs des F.S.I. ? Donc, en utilisant les SMTP de l'un ou l'autre de ces FSI, cela devrait fojnctionner ?
C'est le FSI dont vous voulez utiliser le SMTP qui doit vous donner le port et le protocole à utiliser ; ce n'est pas obligatoirement le même entre les différents FSI.

Ce peut être, parmi d'autres :
- port 25 avec authentification TLS
- port 25 avec authentification TLS après identification POP port 995
- port 587 avec authentification MD5
....

------------------------------------------------------------------------------------------------------------
Wampserver 3.1.7 32 bit - Apache 2.4.38 - PHP 7.3.2/7.2.15/7.1.26/7.0.33/5.6.40 - MySQL 5.7.25 - MariaDB 10.3.12
Wampserver 3.1.7 64 bit - Apache 2.4.38 - PHP 7.3.2/7.2.15/7.1.26/7.0.33/5.6.40 - MySQL 5.7.25/8.0.14 - MariaDB 10.3.12
PhPMyadmin 4.8.5 - MysqlDumper 1.24.5
on W10 and W7 Pro 64 bit
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons
« Ce n'est pas parce qu'ils sont nombreux à avoir tort, qu'ils ont forcément raison. Coluche »
« It's not because they are many to be wrong, they are necessarily right. Coluche »

Options: Répondre•Citer ce Message
Re: Utilisation en local de la fonction mail de PHP
Envoyé par: YD (---.w90-44.abo.wanadoo.fr)
Date: 22 September 2018 à 18:24

Bonjour,

Je livre d'abord une citation qui me paraît bien éclairer la question des SMTP/port :

"Par défaut et pour des raisons historiques, il n'est pas nécessaire de s'authentifier pour envoyer du courrier électronique, ce qui signifie qu'il est très facile d'envoyer du courrier en falsifiant l'adresse électronique de l'expéditeur.

Ainsi, la quasi-totalité des fournisseurs d'accès verrouillent leurs serveurs SMTP afin de n'en permettre l'utilisation qu'à leurs seuls abonnés ou plus exactement aux machines possédant une adresse IP appartenant au domaine du fournisseur d'accès. Ceci explique notamment la nécessité qu'ont les utilisateurs nomades de modifier les paramètres du serveur sortant dans leur client de messagerie à chaque changement entre le domicile et l'entreprise."

voir 'https://www.commentcamarche.com/contents/172-fonctionnement-du-courrier-electronique-mta-mda-mua'


J'ai vérifié cela en changeant, sous Thunderbird, le SMTP sortant de mes diverses boîtes aux lettres (BAL) (ce que je n'avais jamais testé !),... et j'ai enfin compris cette histoire de SMTP sortant !
Pour les autres pauvres débutants comme moi, difficiles à la comprenoire, je vous livre le résultat de mes tests :
- mon adresse IP internet est celle de ma Livebox. Je suis donc dans le domaine d'Orange dont le SMTP sortant est smtp.orange.fr
- par défaut, le SMTP sortant de chacune de mes BAL a été fixé par Thunderbird, lors de la création des différents comptes, en correspondance avec le domaine de l'adresse mail (par exemple, smtp.laposte.net pour une BAL XXX@laposte.net)
- comme je suis identifié sur toutes ces BAL par une adresse et un mot de passe, les protocoles utilisés pour l'envoi avec utilisation de ces SMTP sont : SMTP - SSL (port 465) ou SMTP ;- Authentification (port 587) et nécessitent une identification lors de l'envoi du mail
- l'usage du port 25 est possible sur toutes les messageries et ne nécessite aucune authentification de l'expéditeur. Mais, à cause de la restriction d'utilisation par les F.S.I., il n'est réellement utilisable que dans mon domaine, c'est à dire smtp.orange.fr
- je peux donc mettre, pour toutes mes BAL comme SMTP sortant, smtp.orange.fr et l'envoi des mails se fera sans erreur (et sans authentification) par le port 25.

Si, "en vrai" (c'est à dire sur son site web hébergé), le port 25 est interdit par l'hébergeur, il faut nécessairement s'authentifier.

Il me semble que l'utilisation simple de la fonction mail ne permet pas l'authentification (ce qui signifie que seul le port 25 est utilisable, donc forcément dans le domaine smtp.orange.fr pour moi ?).
Si j'ai bien compris donc, il faut, pour utiliser l'authentification, soit utiliser une extension comme PHPMailer soit utiliser sendmail.

J'espère ne pas avoir écrit trop de bêtises mais demande aux experts de donner leur assentiment ! Merci à eux !
YD

Options: Répondre•Citer ce Message


Aller à : Liste des Forums•Liste des messages•Recherche•Connexion
Désolé, seuls les utilisateurs connectés peuvent envoyer des messages dans ce forum.
Cliquer ici pour se connecter

design by jidePowered by Alter Way get firefoxget PHP