Aller au contenu

[Résolu]Fonction mail php


Bojack

Messages recommandés

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 :byebye:

Lien vers le commentaire
Partager sur d’autres sites

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

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 :incline:

$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 :transpi: En fait c'est juste une redirection sur la page de remerciement :francais: 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é :francais:

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 :transpi:

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 :craint:

Lien vers le commentaire
Partager sur d’autres sites

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

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 :francais:

J'ai également envoyé un mail à Belgacom en espérant qu'ils me répondent un jour :craint:

Pour le moment ca tourne avec l'adresse hotmail en Cc et la gmail en Bcc pour être informé des commandes :francais:

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 :D Perso j'ai l'impression que les mails destinés à l'adresse skynet sont mis en attente, est-ce possible :francais: Les gmail/hotmail on voit un ''status=sent'' alors que pour skynet c'est plutôt "queued for xx days" :chinois:

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

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

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 :eeek2:

Si vous pouvez me guider merci d'avance :ouioui:

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

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

Oui grâce à Amour tout fonctionne parfaitement gloire à lui :dd:

Il fallait effectivement modifier la valeur du sendmail_path du php.ini comme mentionné :transpi:

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 :oops:

Encore merci pour ces réponses :oops:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...