Bojack Posté(e) le 25 juin 2010 Partager Posté(e) le 25 juin 2010 Hello, J'ai un petit problème de php : j'ai créé un site web contenant une partie ou les clients peuvent commander nos produits. Je fais donc appel à la fonction mail de php pour envoyer les données contenues dans le formulaire. Seulement, le mail arrive bien à destination avec une messagerie de type hotmail ou gmail, mais pas skynet (messagerie du boss) Je précise avoir vérifié que l'antispam de skynet est désactivé, idem pour kapersky. Le site est hébergé chez moi, peut-être y a-t-il qqch à modifier au niveau du php.ini ??? (je suis encore un noob) Voici le script envoi.php : <?php $adresse= 'xxx@skynet.be'; "\r\n"; $sujet='Commande en ligne'; "\r\n"; $header=header("location:merci.htm"); "\r\n"; $nom = $_POST['nom']; "\r\n"; $prenom = $_POST['prenom']; "\r\n"; $entreprise = $_POST['entreprise']; "\r\n"; $gsm = $_POST['gsm']; "\r\n"; $rue = $_POST['rue']; "\r\n"; $cp = $_POST['cp']; "\r\n"; $date = $_POST['date']; "\r\n"; $trace = $_POST['trace']; "\r\n"; $remarque = $_POST['remarque']; "\r\n"; $message = "nom: " . $nom . "\r\n"; $message .= "prenom: " . $prenom . "\r\n"; $message .= "entreprise: " . $entreprise . "\r\n"; $message .= "gsm: " . $gsm . "\r\n"; $message .= "rue: " . $rue . "\r\n"; $message .= "cp: " . $cp . "\r\n"; $message .= "date: " . $date . "\r\n"; $message .= "trace: " . $trace . "\r\n"; $message .= "remarque: " . $remarque . "\r\n"; mail($adresse, $sujet, $message, $header); "\r\n"; ?> Merci d'avance pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 26 juin 2010 Partager Posté(e) le 26 juin 2010 Il se peut que Skynet refuse les mails venant d'une IP dynamique, si vous en avez une ? Aussi, afin de tester, si vous êtes d'accord, je vous donnerais une adresse email par MP afin d'analyser les entêtes etc... Lien vers le commentaire Partager sur d’autres sites More sharing options...
RaphAstronome Posté(e) le 26 juin 2010 Partager Posté(e) le 26 juin 2010 $header=header("location:merci.htm"); "\r\n";[...] mail($adresse, $sujet, $message, $header); "\r\n"; C'est quoi ça ? Tu envoie un en tête HTTP et après tu mes le résultats dans l'entête de mail, c'est pas normal ça. Sinon à part ça pourquoi tout ces "\r\n" seuls ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 26 juin 2010 Partager Posté(e) le 26 juin 2010 en effet, ton header devrait plutot ressembler a ca : $header = 'From: webmaster@example.com\r\nReply-To: webmaster@example.com\r\nX-Mailer: PHP/'.phpversion(); si tes headers sont foireux, ca pourrait expliquer que tes mails aient ete filtres par un quelconque dispositif en place sur ce domaine. et oui, \r\n, bon reflexe, mais pas la peine d'en rajouter un derriere mail(), header(), ... plutot quand tu construis une requete. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bojack Posté(e) le 26 juin 2010 Auteur Partager Posté(e) le 26 juin 2010 Il se peut que Skynet refuse les mails venant d'une IP dynamique, si vous en avez une ?Aussi, afin de tester, si vous êtes d'accord, je vous donnerais une adresse email par MP afin d'analyser les entêtes etc... Nous avons une ip fixe, et pas de probleme pour les tests merci $header=header("location:merci.htm"); "\r\n";[...] mail($adresse, $sujet, $message, $header); "\r\n"; C'est quoi ça ? Tu envoie un en tête HTTP et après tu mes le résultats dans l'entête de mail, c'est pas normal ça. Sinon à part ça pourquoi tout ces "\r\n" seuls ? Je n'ai pas tout compris En fait c'est juste une redirection sur la page de remerciement Sinon pour les \r\n j'avoue ne pas trop savoir comment les placer, juste derrière le code ou après les ";" ?? je vais vérifier mais bon comme ca passe (sauf skynet) je me suis pas trop inquiété en effet, ton header devrait plutot ressembler a ca :$header = 'From: webmaster@example.com\r\nReply-To: webmaster@example.com\r\nX-Mailer: PHP/'.phpversion(); si tes headers sont foireux, ca pourrait expliquer que tes mails aient ete filtres par un quelconque dispositif en place sur ce domaine. et oui, \r\n, bon reflexe, mais pas la peine d'en rajouter un derriere mail(), header(), ... plutot quand tu construis une requete. Merci je teste ca de suite Edit : j'ai bien changé le header ce qui donne $header = 'From: xxx@skynet.be\r\nReply-To: xxx@skynet.be\r\nX-Mailer: PHP/'.phpversion(); $sujet='Commande en ligne'; "\r\n"; $header=header("location:merci.htm"); mais je ne reçois toujours rien sur skynet Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 27 juin 2010 Partager Posté(e) le 27 juin 2010 La fonction header() de PHP n'a pas à être lié au header du mail... Ce serait donc plutôt : $header = 'From: xxx@skynet.be\r\nReply-To: xxx@skynet.be\r\nX-Mailer: PHP/'.phpversion(); $sujet='Commande en ligne'; "\r\n"; header("Location: merci.htm"); De plus, en théorie il vaudrait mieux mettre une url complète dans le header("Location: www.url.com/merci.htm") Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 27 juin 2010 Partager Posté(e) le 27 juin 2010 /* en n'oubliant pas d'appeler mail(), avant header() */ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bojack Posté(e) le 29 juin 2010 Auteur Partager Posté(e) le 29 juin 2010 Merci beaucoup pour vos réponses j'ai fait des essais avec le bon code et fonction mail avant header sans succès jusqu'à présent J'ai également envoyé un mail à Belgacom en espérant qu'ils me répondent un jour Pour le moment ca tourne avec l'adresse hotmail en Cc et la gmail en Bcc pour être informé des commandes Ah oui j'alllais oublié les logs. Je sais pas trop lesquels consulter car il y en a beaucoup mais j'ai trouvé des trucs bizarres que je colle ici en espérant que cela donne des indices Perso j'ai l'impression que les mails destinés à l'adresse skynet sont mis en attente, est-ce possible Les gmail/hotmail on voit un ''status=sent'' alors que pour skynet c'est plutôt "queued for xx days" mail.log Jun 27 07:35:39 debian postfix/qmgr[27201]: E19C322F69: from=<root@debian.localdomain>, size=2536, nrcpt=1 (queue active) Jun 27 07:35:50 debian postfix/local[27715]: fatal: open database /etc/aliases.db: No such file or directory Jun 27 07:35:51 debian postfix/master[2080]: warning: process /usr/lib/postfix/local pid 27715 exit status 1 Jun 27 07:35:51 debian postfix/master[2080]: warning: /usr/lib/postfix/local: bad command startup -- throttling mail.log.1 Jun 23 23:10:22 debian postfix/cleanup[2109]: B667922D84: message-id=<20100623211022.B667922D84@debian.localdomain> Jun 23 23:10:22 debian postfix/pickup[2105]: warning: EAEE2222A5: message has been queued for 32 days Jun 23 23:10:22 debian postfix/qmgr[2106]: B667922D84: from=<www-data@debian.localdomain>, size=324, nrcpt=1 (queue active) Jun 23 23:10:22 debian postfix/pickup[2105]: EAEE2222A5: uid=33 from=<www-data> Jun 23 23:10:22 debian postfix/cleanup[2109]: EAEE2222A5: message-id=<20100623211022.EAEE2222A5@debian.localdomain> Jun 23 23:10:23 debian postfix/qmgr[2106]: EAEE2222A5: from=<www-data@debian.localdomain>, size=324, nrcpt=1 (queue active) Jun 23 23:10:23 debian postfix/pickup[2105]: warning: 2FD4722D5B: message has been queued for 31 days Jun 23 23:10:23 debian postfix/pickup[2105]: 2FD4722D5B: uid=33 from=<www-data> mail.err Jun 27 07:35:50 debian postfix/local[27715]: fatal: open database /etc/aliases.db: No such file or directory Jun 27 07:35:53 debian postfix/smtpd[27716]: fatal: open database /etc/aliases.db: No such file or directory Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 29 juin 2010 Partager Posté(e) le 29 juin 2010 Il faudrait dans ce cas générer la base des alias, via la commande "newaliases" Est-ce mieux ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 29 juin 2010 Partager Posté(e) le 29 juin 2010 J'ai bien reçu votre MP, et j'ai lu le log de mon serveur de mail (IP masquée en partie) : Jun 29 15:25:57 Amour postfix/smtpd[22874]: NOQUEUE: reject: MAIL from xx.0-66-87.adsl-static.isp.belgacom.be[87.66.0.xx]: 450 4.1.8 <www-data@debian.localdomain>: Sender address rejected: Domain not found; from=<www-data@debian.localdomain> proto=ESMTP helo=<debian.localdomain>Jun 29 15:25:58 Amour postfix/smtpd[22874]: disconnect from xx.0-66-87.adsl-static.isp.belgacom.be[87.66.0.xx] En fait, cela vient du fait que votre script PHP utilise l'expéditeur www-data@debian.localdomain, et mon serveur de mail rejette les domaines qui n'existent pas... donc le mail n'est jamais arrivé. Il faudrait soit changer cet expéditeur dans votre php.ini, soit changer dans les entêtes de votre fonction mail() Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bojack Posté(e) le 29 juin 2010 Auteur Partager Posté(e) le 29 juin 2010 En fait, cela vient du fait que votre script PHP utilise l'expéditeur www-data@debian.localdomain, et mon serveur de mail rejette les domaines qui n'existent pas... donc le mail n'est jamais arrivé.Il faudrait soit changer cet expéditeur dans votre php.ini, soit changer dans les entêtes de votre fonction mail() Encore merci pour votre aide mais j'ai cherché dans le php.ini je ne trouve pas le "@debian.localdomain" Je ne sais pas trop ou/ce qu'il faut changer et quoi mettre à la place Si vous pouvez me guider merci d'avance note : mon resolv.conf : search .com nameserver 195.238.2.21 nameserver 195.238.2.22 Mon fichier hosts : 127.0.0.1 localhost 87.66.0.x ''domaine''.be # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 30 juin 2010 Partager Posté(e) le 30 juin 2010 Peut-être que cette adresse email par défaut est générée par l'user utilisé par apache + le nom d'hôte de la machine... Pour changer cela, il suffit de modifier la valeur de "sendmail_path" dans le php.ini (la valeur par défaut, est "/usr/sbin/sendmail -t -i"), et mettre à la place : "/usr/sbin/sendmail -t -i -f emailvoulu@votredomaine.com" Pouvez-vous redémarrer Apache, et ensuite faire un nouvel essai et m'envoyer un mail ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 30 juin 2010 Partager Posté(e) le 30 juin 2010 Suite au changement, j'ai bien reçu le mail Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bojack Posté(e) le 30 juin 2010 Auteur Partager Posté(e) le 30 juin 2010 Oui grâce à Amour tout fonctionne parfaitement gloire à lui Il fallait effectivement modifier la valeur du sendmail_path du php.ini comme mentionné Tout passe, skynet y compris donc je mets en [Résolu] Je réouvrirai peut-être ce topic si je ne m'en sors pas avec le javascript pour les champs obligatoires Encore merci pour ces réponses Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.