Titre: [Resolu] envoie de mail PHP Posté par: neibb le 16 Juillet 2018 à 16:50:29 Bonjour a tous,
je voudrais parvenir a envoyer un mail via php. Mon script a l'air de bien s'executer, cependant, lors de ma phase de test je ne recois aucun message... Code: <?php Ce qui m'enerve c'est que je n'arrive pas du tout a comprendre ce qui ne va pas. J'ai essaye plusieurs variantes, mais ce code est le seul qui ne me retourne aucune erreur. Au passage, je me demande meme si je pourrait pas completement me passer du header? (Meme resultat avec ou sans.) Est-ce qu'une ame charitable pourrait m'aider a y voir plus clair? :) Merci beaucoup. Titre: Re : envoie de mail PHP Posté par: the lsd le 16 Juillet 2018 à 17:05:36 Io
1. Le smtp orange écoute t-il bien sur le port 25 2. Regarde avec un outil comme wireshark si tes paquets partent bien 3. Spam ? 4. Trop de code. Réduis le au strict minimum afin de voir s'il est fonctionnel, puis rajoute tes différentes parties (les headers additionnel, les boundaries, etc) Enjoy The lsd Titre: Re : envoie de mail PHP Posté par: neibb le 16 Juillet 2018 à 17:28:57 Ok merci.
Oui, j'etais justement en train de simplifier tout ca : Code: <?php Citation 1. Le smtp orange écoute t-il bien sur le port 25 Oui, je l'ai deja utilise via un autre code en python est fonctionne parfaitement.Citation 2. Regarde avec un outil comme wireshark si tes paquets partent bien Alors c'est quelque chose que je ne maitrise vraiment pas... (l'occaz de s'y mettre me dira-t-on.)Code: 3. Spam ? Bon, je vais chercher du cote de wireshark alors. Sinon, dans le code, rien de choquant? En tout cas merci bien! Titre: Re : envoie de mail PHP Posté par: flob le 16 Juillet 2018 à 19:37:35 Salut !
Si par hasard tu utilises Wamp, tu dois installer et configurer sendmail car il n'est pas inclut par défaut. Tu peux facilement trouver un tuto pour faire ça en cherchant "wamp sendmail" sur ton moteur de recherche favori. Petit détail : il me semble que la fonction mail (http://php.net/manual/fr/function.mail.php) de Php ne lance pas d'exception, le try catch n'est donc pas utile. Titre: Re : envoie de mail PHP Posté par: neibb le 17 Juillet 2018 à 00:26:50 Salut flob,
j'ai installe php avec Apache2 sur debian. De ce que j'ai pu voir, php inclu une fonction native mail() independante de sendmail: Citation "Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.", http://php.net/manual/fr/book.mail.php Et en meme temps je viens de trouver le contre-exemple : Citation Configuration à l'exécution : On voit bien ici l'appel a sendmail derniere ligne. Les deux trois lignes d'avant viennent pour appuyer mon code.Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini. Options de configuration pour le mail: Nom Défaut Modifiable (...) SMTP "localhost" PHP_INI_ALL smtp_port "25" PHP_INI_ALL sendmail_from NULL PHP_INI_ALL sendmail_path "/usr/sbin/sendmail -t -i" PHP_INI_SYSTEM Du coup j'avais exim4 d'installe par defaut dans debian et non sendmail, dans un premier temps j'ai teste avec : Code: ini_set("sendmail_path","/usr/sbin/exim4"); Je l'ai donc desinstalle et remplace par sendmail, mais le mail n'arrive toujours pas. Voici le contenu de mon php.ini: Code: [mail function] Pour le try/catch, en fait je cherchais un moyen de choper les messages d'erreurs possibles. Me disant que si la fonction mail() echouait j'aurai une exception. Du coup comment je pourrais faire pour attraper les erreurs possibles? Du cote de wireshark, j'ai ecoute sur wlan0. Etant donne la masse de resultats, j'ai filtre avec l'ip de smtp.orange.fr mais je n'ai rien vu. Rien non plus sur le port 25 ou le protocole smtp. Apres je cherche peut etre mal, je decouvre juste wireshark. Mon probleme pourrait-il venir de ma configuration d'Apache? Je vais continuer de creuser, peut-etre qu'en reprenant la doc a tete repose ca ira mieux. Merci de vos reponses! PS: Desole, the lsd, je ne t'ai pas salue sur mon precedent message, je devais etre trop presse d'avoir une reponse... :/ Alors du coup j'en profite maintenant : Salut the lsd! Merci de ta reponse (en + si rapide!), et je te prie de m'escuser pour ce manque de politesse. =D Titre: Re : envoie de mail PHP Posté par: neibb le 17 Juillet 2018 à 14:40:56 Bon, je viens un peu faire le point, vu que mon precedent message etait quand meme un peu brouillon.
1 - Effectivement, la fonction mail() de PHP utilise bien par defaut l'outil sendmail, mais sendmail n'est pas le seul possible. Par defaut Debian lui, a d'installe exim4 (qui doit faire plus ou moins la meme chose que sendmail). 2 - On peut specifier ce genre de choses a PHP grace au fichier php.ini, a la rubrique : [mail function], a la ligne : sendmail_path = "/usr/sbin/exim4 -t -i" ou bien : sendmail_path = "/usr/sbin/sendmail -t -i". J'ai donc essaye avec les deux programmes mais visiblement aucun mail n'est envoye. J'ai egalement suivi la doc officielle de PHP afin d'utiliser la fonction mail() de la maniere la plus simple possible. En cherchant a propos de Apache2 et l'envoi de mail, je retombe toujours sur l'utilisation de PHP. Donc mon probleme viendrait surement de sa (mauvaise) configuration... Par contre j'ai trouve ca sur le net : Citation Si vous envisagez d'envoyer du courrier à d'autres domaines Internet, vous devez vous assurer que l'adresse IP de la machine qui envoie le courrier comporte également une entrée DNS inversée (enregistrement PTR). La plupart des fournisseurs d'accès Internet importants rejetteront votre courrier si votre adresse IP n'a pas d'enregistrement PTR ou s'il pointe vers un hôte générique (par exemple, 1.2.3.3.domain.isp.com). Il devrait inverser quelque chose comme mail.yourdomain.com Cependant, comme je l'expliquais au debut, ce service smtp de chez orange, je l'ai deja teste et approuve (encore a l'instant via un script python et le mail est bien recu) et a aucun moment je me suis pose de questions a propos de ce PTR... Par contre j'ai reussi a intercepter le mail envoye via python sur wireshark, ce qui me permet de bien visualiser sa structure. Peut-etre est-ce juste une erreur de conception/structure/compatibilite? A suivre... Des gens ont-ils deja envoye des mail via PHP (de maniere authentifie ou non) histoire de comparer? Merci! Titre: Re : envoie de mail PHP Posté par: flob le 17 Juillet 2018 à 16:58:54 Perso j'utilise PHPMailer (https://github.com/PHPMailer/PHPMailer) pour faciliter les choses ...
Pour sendmail, tu dois avoir une configuration à faire pour indiquer le SMTP etc... J'ai pas encore eu l'occasion de réaliser ce genre de config, voilà un lien qui semble donner pas mal d'infos : https://www.digitalocean.com/community/tutorials/how-to-send-email-through-an-external-smtp-service-with-sendmail-on-freebsd-10-1 Titre: Re : envoie de mail PHP Posté par: the lsd le 17 Juillet 2018 à 17:03:12 Neibb, pas de souci, je me formalise pas pour ça t'en fais pas ^^
Pour le spam, ma question, c'était pas si ton but était d'en faire (encore heureux), mais si ton mail ne tombait pas dans tes spams ^^' De toute façon, si tu ne vois rien avec wireshark, c'est que le problème vient bien de ton code :) Enjoy The lsd Titre: Re : envoie de mail PHP Posté par: neibb le 17 Juillet 2018 à 19:48:45 Ca y est!, j'en suis venu a bout!!!
Donc c'etait bel et bien un probleme de configuration. Je suis reparti sur exim4 au final mais la procedure doit etre la meme avec sendmail : Pour la configuration : Code: sudo dpkg-reconfigure exim4-config Ou alors modifier directement le fichier /etc/exim4/update-exim4.conf.conf. Apres on recharge la nouvelle config : Code: sudo update-exim4.conf Et on redemarre le service : Code: sudo service exim4 restart Un peu plus de detailles dans un lien ci-joint. J'ai un peu honte, j'aurais du commencer par la... https://doc.ubuntu-fr.org/exim4-satellite :oops: (En meme temps, personne ne parlait de ca dans les docs que j'avais suivi... (ni meme pour sendmail)) Du coup pour la configuration de sendmail on peut faire ca : Code: sudo sendmailconfig J'ai egalement modifie le fichier /etc/hosts pour y mettre en premiere ligne: Code: 127.0.0.1 localhost localhost.localdomain domain_name # En remplacant "localhost.localdomain" et "domain_name" par les infos qui vont biens. On redemarre exim4, puis apache2, et la miracle ca fonctionne! Bon il reste bien les petites configurations a faire, mais ca je m'en charge! Oh top! Un grand merci a vous deux! =) PS : Pour l'histoire des spams, a ouais, j'avais pas compris ^^ bon ba tant mieux alors! Et puis merci au passage, j'ai pu voir que wireshark etait pas bien mechant, et tres interessant! |