OVH Cloud OVH Cloud

traitement d'un formulaire et envoi en BAL

21 réponses
Avatar
docanski
Bonsoir,
J'ai retrouvé dans mes archives le code aimablement fourni ici même par
un contributeur et testé en interne sous EsayPHP. Le formulaire à
traiter est ici : http://armorance.free.fr/formulaire.html .
Pour les essais en interne, sa première ligne de code est toutefois :
<form action="traitement.php" method="post" name="form1" id="form1"> et
le script PHP est le suivant :

<?php if(isset($ok)){
$dest="monmail@free.fr";
// on recupere les infos
$referer= getenv("HTTP_REFERER");
// envoi du resultat par email
$sujet= "Utilisation du formulaire Armorance";
$body="\n*** Resultat du formulaire ***\n";
if(count($HTTP_POST_VARS)){
while (list($key, $val) = each($HTTP_POST_VARS)){
$body.="$key : $val\n";
}
}
if(count($HTTP_GET_VARS)){
while (list($key, $val) = each($HTTP_GET_VARS)){
$body.="$key : $val\n";
}
}
$body.="*************************\n";
$headers = "From: monmail@free.fr";
mail($dest,$sujet,$body,$headers);
?>

Problème : lors des tests, EasyPHP me donne :
Parse error: parse error in g:\program files\easyphp1-8\www\armorance en
php\armorancephp\traitement.php on line 23
sachant évidemment que le chemin cité est celui du fichier sur une de
mes partitions.
Qu'est-ce qui cloche et, évidemment, est-ce que la méthode est bonne ou
y a-t'il une erreur au niveau du script (mise en page du traitement
envoyé par Email, notamment car je n'y vois aucun "print", retour
automatique du visiteur sur la page d'accueil après envoi du formulaire,
etc.) pour l'usage voulu ?

Cordialement,
--
docanski

- Les Côtes du nord de la Bretagne par le sentier des douaniers
- Memento des champignons : le guide le plus complet du Web
- Et d'autres sujets encore sur ----> http://armorance.free.fr

10 réponses

1 2 3
Avatar
Olivier Miakinen

[...]
$dest="";
[...]
$headers = "From: ";
mail($dest,$sujet,$body,$headers);
[...]

Warning: mail() [function.mail]: Spam detecte, mail non envoye. in
/mnt/141/sdb/6/1/monmail/traitement.php on line 21

Bien entendu, l'adresse "monmail" dans le script est évidemment
remplacée par la véritable adresse du destinataire


Aux deux endroits ? Si tu mets comme adresse de From celle du
destinataire, il pourrait sembler légitime que la fonction d'envoi
de courriel se plaigne.

Par ailleurs, on en arrive à un point où ta config peut influer énormément :
- Sur quel O.S. fais-tu les tests ?
- Utilises-tu un programme sendmail en local ?
- Si oui, est-il dans le PATH ?
- Sinon, les paramètres « smtp » et « smtp_port » sont-ils OK ?
- As-tu défini un « sendmail_from » ?
- ...

http://fr.php.net/manual/fr/ref.mail.php

Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Olivier Miakinen nous narre ce qui suit en ce 26/04/2007 0:04 :

Bien entendu, l'adresse "monmail" dans le script est évidemment
remplacée par la véritable adresse du destinataire


Aux deux endroits ? Si tu mets comme adresse de From celle du
destinataire, il pourrait sembler légitime que la fonction d'envoi de
courriel se plaigne.


Je ne le crois pas. En effet, c'est comme si je m'envoyais un mail à
moi-même, en somme.
C'est d'ailleurs le principe du formulaire (CGI) que Free met à
disposition de
ses hébergés : l'adresse email de l'expéditeur est la même que celle du
destinataire.

Par ailleurs, on en arrive à un point où ta config peut influer
énormément :


Je le supposais, en effet et c'est pourquoi j'ai fait ces essais
directement en ligne ... avec le résultat que tu sais.

- Sur quel O.S. fais-tu les tests ?


Win2k

- Utilises-tu un programme sendmail en local ?


EasyPHP l'intègre (voir ci-dessous)

- Si oui, est-il dans le PATH ?


J'ai cherché un fichier portant un tel nom dans l'OS : ne trouve pas ...
Je me souviens vaguement de l'époque du bon vieux DOS où celui-ci
pouvait être défini mais je suppose qu'il ne s'agit plus de cela : il
n'y a plus de DOS dans ma machine.

- Sinon, les paramètres « smtp » et « smtp_port » sont-ils OK ?


Réglés par défaut sur localhost et port25

- As-tu défini un « sendmail_from » ?


Il est défini par défaut en

http://fr.php.net/manual/fr/ref.mail.php


Je vais lire cette doc mais comme écrit ci-dessus, j'ai fait les essais
en ligne, sans succès.

Cordialement,
--
docanski

- Les Côtes du nord de la Bretagne par le sentier des douaniers
- Memento des champignons : le guide le plus complet du Web
- Et d'autres sujets encore sur ----> http://armorance.free.fr


Avatar
Olivier Miakinen

Si tu mets comme adresse de From celle du
destinataire, il pourrait sembler légitime que la fonction d'envoi de
courriel se plaigne.


Je ne le crois pas. En effet, c'est comme si je m'envoyais un mail à
moi-même, en somme.


Aucun problème si c'est bien le cas. Mais es-tu toujours le destinataire
de tous les courriels que tu envoies ?

C'est d'ailleurs le principe du formulaire (CGI) que Free met à
disposition de
ses hébergés : l'adresse email de l'expéditeur est la même que celle du
destinataire.


Admettons pour l'entête From: du message. Mais pour le FROM d'enveloppe
et le champ Return-Path ?

- Sur quel O.S. fais-tu les tests ?


Win2k


Ok. Ce sont donc smtp, smtp_port et sendmail_from qui seront utilisés si
tu n'as pas de sendmail_path.

- Utilises-tu un programme sendmail en local ?


EasyPHP l'intègre (voir ci-dessous)


Tu utilises donc EasyPHP sur ton serveur de production qui est un
Windows 2000. J'ai entendu dire plusieurs fois que ce n'était pas très
prudent car les paramètres par défaut ne sont pas forcément très bien
choisis, mais je ne suis pas un spécialiste, et puis tu as pu configurer
tout comme il faut.

- Si oui, est-il dans le PATH ?


J'ai cherché un fichier portant un tel nom dans l'OS : ne trouve pas ...
Je me souviens vaguement de l'époque du bon vieux DOS où celui-ci
pouvait être défini mais je suppose qu'il ne s'agit plus de cela : il
n'y a plus de DOS dans ma machine.


Je suppose que sendmail_path est bien laissé à NULL, c'est ça ?

- Sinon, les paramètres « smtp » et « smtp_port » sont-ils OK ?


Réglés par défaut sur localhost et port25


Tu aurais donc un serveur de mail directement sur ton Windows 2000. Avec
qui discute-t-il ? Es-tu sûr que ce n'est pas un relai ouvert ?

- As-tu défini un « sendmail_from » ?


Il est défini par défaut en


Alors là, ça m'étonnerait fort que cette adresse t'appartienne. Si c'est
ça qui est mis dans le FROM d'enveloppe, je comprendrais que le serveur
râle, même s'il est correctement configuré.

http://fr.php.net/manual/fr/ref.mail.php


Je vais lire cette doc mais comme écrit ci-dessus, j'ai fait les essais
en ligne, sans succès.


Encore une fois je ne suis pas un spécialiste, mais j'ai l'impression --
corrige-moi si je me trompe -- que tu es en train de jouer à l'apprenti
sorcier avec le mail sans trop t'y connaître toi non plus. Alors là je
dis ATTENTION DANGER ! Dans de tels cas il est très facile d'installer
un relai ouvert, qui fera qu'après que tu auras contribué à faire
transiter quelques zillions de spams tu te verras mis en liste noire.


Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Olivier Miakinen nous narre ce qui suit en ce 27/04/2007 13:03 :

Admettons pour l'entête From: du message. Mais pour le FROM d'enveloppe
et le champ Return-Path ?


?

Je suppose que sendmail_path est bien laissé à NULL, c'est ça ?


Réglé sur "no value". C'est la même chose, je suppose.

Encore une fois je ne suis pas un spécialiste, mais j'ai l'impression --
corrige-moi si je me trompe -- que tu es en train de jouer à l'apprenti
sorcier avec le mail sans trop t'y connaître toi non plus.


En effet : je cherche une solution à ce simple et unique problème de
traitement et ne maîtrise pas la pratique d'un serveur. C'est pourquoi
je tente ces essais au moyen de EasyPHP qui, paraît-il, est la voie la
plus facile pour un débutant. Quand je fais l'essai avec ce serveur
local pour le formulaire qui envoie le résultat de celui-ci vers le
fichier *local* traitement.php, j'obtiens :

Warning: mail(): Failed to connect to mailserver at "localhost" port 25,
verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
in g:program fileseasyphp1-8wwwessais de traitement de
formulairetraitement.php on line 21

Alors qu'en faisant la même chose sur le serveur (hébergeur) Free, le
message est :

Warning: mail() [function.mail]: Spam detecte, mail non envoye. in
/mnt/141/sdb/6/1/monmail/traitement.php on line 21

L'erreur rapportée par le serveur est donc bien la même chaque fois :
elle concerne la ligne 21.
Il ne semble donc pas y avoir de problème au niveau de la configuration
du serveur mais plutôt au niveau du script.
L'idéal serait peut-être d'en essayer un autre, mais je n'ai rien trouvé
de tel sur le Web sinon soit avec adresse email visible dans le
formulaire (ce qui est évidemment à exclure), soit avec utilisation
d'une BDD.

dis ATTENTION DANGER ! Dans de tels cas il est très facile d'installer
un relai ouvert, qui fera qu'après que tu auras contribué à faire
transiter quelques zillions de spams tu te verras mis en liste noire.


Le serveur est désactivé quand je suis en connexion (RTC), ce qui
devrait m'affranchir de tout risque de ce genre.

... et je suis toujours en rade :-(

Cordialement,
--
docanski

- Les Côtes du nord de la Bretagne par le sentier des douaniers
- Memento des champignons : le guide le plus complet du Web
- Et d'autres sujets encore sur ----> http://armorance.free.fr

Avatar
Olivier Miakinen

Encore une fois je ne suis pas un spécialiste, mais j'ai l'impression --
corrige-moi si je me trompe -- que tu es en train de jouer à l'apprenti
sorcier avec le mail sans trop t'y connaître toi non plus.


En effet : je cherche une solution à ce simple et unique problème de
traitement et ne maîtrise pas la pratique d'un serveur. C'est pourquoi
je tente ces essais au moyen de EasyPHP qui, paraît-il, est la voie la
plus facile pour un débutant. Quand je fais l'essai avec ce serveur
local pour le formulaire qui envoie le résultat de celui-ci vers le
fichier *local* traitement.php, j'obtiens :

Warning: mail(): Failed to connect to mailserver at "localhost" port 25,
verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
in g:program fileseasyphp1-8wwwessais de traitement de
formulairetraitement.php on line 21


Donc, tu n'as pas de serveur de mail sur ta machine locale, en tout cas
pas à l'écoute sur le port 25. C'est une bonne nouvelle, ça veut dire au
moins que tu n'as pas créé un relai ouvert pour le spam.

Alors qu'en faisant la même chose sur le serveur (hébergeur) Free, le
message est :

Warning: mail() [function.mail]: Spam detecte, mail non envoye. in
/mnt/141/sdb/6/1/monmail/traitement.php on line 21


Attends voir... Tu parles bien de l'hébergeur gratuit Free et pas de
l'hébergeur payant Online ? Peux-tu confirmer que les réponses à mes
questions précédentes (Win2k, envoi du courriel à localhost:25 avec
comme adresse de From « ») sont bien sur le serveur
de ton hébergeur ???

L'erreur rapportée par le serveur est donc bien la même chaque fois :
elle concerne la ligne 21.
Il ne semble donc pas y avoir de problème au niveau de la configuration
du serveur mais plutôt au niveau du script.


Tu ne peux pas dire ça sérieusement. Si c'était un problème au niveau du
script, tu aurais la même erreur dans les deux cas, or ici il semble que
tu n'aies aucun serveur de mail sur ta machine locale, tandis qu'il y en
a un chez ton hébergeur mais que celui-ci refuse ton message.

dis ATTENTION DANGER ! Dans de tels cas il est très facile d'installer
un relai ouvert, qui fera qu'après que tu auras contribué à faire
transiter quelques zillions de spams tu te verras mis en liste noire.


Le serveur est désactivé quand je suis en connexion (RTC), ce qui
devrait m'affranchir de tout risque de ce genre.


STOP ! Cesse de parler à la fois de tes essais en local et de ceux chez
ton hébergeur. Choisis ce qui sera *la* solution finale, et tiens t'y.
C'est déjà assez difficile comme ça.

... et je suis toujours en rade :-(


Tu as essayé de contacter Free ? J'ai suivi le lien indiqué sur la FAQ
de fclp, sans succès.


Avatar
P'tit Marcel
Alors qu'en faisant la même chose sur le serveur (hébergeur) Free, le
message est :
Warning: mail() [function.mail]: Spam detecte, mail non envoye. in
/mnt/141/sdb/6/1/monmail/traitement.php on line 21


pas de rapport avec php standard. Ton hébergeur a modifié php pour
renvoyer cette erreur. Vois la FAQ de Free ou son forum dédié
(proxad.free.services.pagesperso).


a+
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/

Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Olivier Miakinen nous narre ce qui suit en ce 27/04/2007 17:00 :

Donc, tu n'as pas de serveur de mail sur ta machine locale, en tout cas
pas à l'écoute sur le port 25. C'est une bonne nouvelle,


Ah que oui, alors ! ;-)

Alors qu'en faisant la même chose sur le serveur (hébergeur) Free, le
message est :

Warning: mail() [function.mail]: Spam detecte, mail non envoye. in
/mnt/141/sdb/6/1/monmail/traitement.php on line 21


Attends voir... Tu parles bien de l'hébergeur gratuit Free et pas de
l'hébergeur payant Online ? Peux-tu confirmer que les réponses à mes
questions précédentes (Win2k, envoi du courriel à localhost:25 avec
comme adresse de From « ») sont bien sur le serveur
de ton hébergeur ???


L'hébergeur est bien Free (puisque le formulaire et l'email destinée à
rapatrier les résultats du traitement sont bien relatifs à ma signature)
mais "localhost" et ses réglages sont bien sur le serveur *local* soit
EasyPHP, sur mon DD.
Sinon "localhost" n'aurait aucun sens, me semble-t'il.

... tu aurais la même erreur dans les deux cas, or ici il semble que
tu n'aies aucun serveur de mail sur ta machine locale, tandis qu'il y en
a un chez ton hébergeur mais que celui-ci refuse ton message.


La répétition du message d'erreur de la *ligne 21* du script paraît
pourtant claire, étant la même dans les deux cas ...

STOP ! Cesse de parler à la fois de tes essais en local et de ceux chez
ton hébergeur. Choisis ce qui sera *la* solution finale, et tiens t'y.


Ben, la solution finale consiste évidemment à faire fonctionner
formulaire + traitement chez mon hébergeur.

C'est déjà assez difficile comme ça.


Il me semble, en effet :-(
Peut-être suis-je vraiment trop "newbee" ...
Pourtant je fais des efforts ;-)

Tu as essayé de contacter Free ?


Inutile, je pense : la fonction "sendmail" y est activée, l'email
utilisée est bien valide (elle sert d'ailleurs essentiellement aux
retours des traitements des CGI de Free) et le formulaire tel que je
l'ai soumis ici, accompagné de son script PHP "traitement.php" sont bien
publiés à la racine du site en signature. Pour t'en convaincre :
http://armorance.free.fr/formperso.html
Mais ça, je l'avais déjà dit ...

Cordialement,
--
docanski

- Les Côtes du nord de la Bretagne par le sentier des douaniers
- Memento des champignons : le guide le plus complet du Web
- Et d'autres sujets encore sur ----> http://armorance.free.fr


Avatar
Olivier Miakinen

Alors qu'en faisant la même chose sur le serveur (hébergeur) Free, le
message est :

Warning: mail() [function.mail]: Spam detecte, mail non envoye. in
/mnt/141/sdb/6/1/monmail/traitement.php on line 21


Attends voir... Tu parles bien de l'hébergeur gratuit Free et pas de
l'hébergeur payant Online ? Peux-tu confirmer que les réponses à mes
questions précédentes (Win2k, envoi du courriel à localhost:25 avec
comme adresse de From « ») sont bien sur le serveur
de ton hébergeur ???


L'hébergeur est bien Free (puisque le formulaire et l'email destinée à
rapatrier les résultats du traitement sont bien relatifs à ma signature)


Bien. Oublie donc les essais que tu as fait chez toi, et je te repose la
question pour l'hébergement chez Free : Win2k ou Unix ? Envoi vers un
port donné d'un serveur de mail ou vers un programme de style sendmail ?
Quel nom est configuré pour FROM et Return-Path ?

mais "localhost" et ses réglages sont bien sur le serveur *local* soit
EasyPHP, sur mon DD.
Sinon "localhost" n'aurait aucun sens, me semble-t'il.


Mais si, bien sûr ! À partir du moment où la machine utilise l'ensemble
de protocoles TCP/IP il y a de grandes chances pour que l'interface de
loopback s'appelle localhost avec l'adresse 127.0.0.1. Mais il y a aussi
de grandes chances pour que le serveur Web soit une machine différente
du serveur de courrier, auquel cas il faudrait contacter une autre
adresse que localhost -- si c'est comme ça que ça marche chez Free.

... tu aurais la même erreur dans les deux cas, or ici il semble que
tu n'aies aucun serveur de mail sur ta machine locale, tandis qu'il y en
a un chez ton hébergeur mais que celui-ci refuse ton message.


La répétition du message d'erreur de la *ligne 21* du script paraît
pourtant claire, étant la même dans les deux cas ...


Grrr... tu n'as pas dit que d'un côté le message d'erreur était « je ne
peux pas me connecter à localhost:25 » et que de l'autre c'était « vous
faites du spam » ???

Fais gaffe, je suis patient, mais là je suis à la limite de tout laisser
tomber et de te laisser te démerder tout seul.

STOP ! Cesse de parler à la fois de tes essais en local et de ceux chez
ton hébergeur. Choisis ce qui sera *la* solution finale, et tiens t'y.


Ben, la solution finale consiste évidemment à faire fonctionner
formulaire + traitement chez mon hébergeur.


BIEN.

Tu as essayé de contacter Free ?


Inutile, je pense : la fonction "sendmail" y est activée,


Tu as déjà un script qui marche, pour pouvoir l'affirmer ? Parce que
pour le moment, ta fonction mail() te retourne une erreur, et P'tit
Marcel a signalé que cette fonction avait été modifiée par ledit hébergeur.



Avatar
Olivier Miakinen
:-( : le courriel n'est pas envoyé et le serveur me renvoie l'erreur
suivante :

Warning: mail() [function.mail]: Spam detecte, mail non envoye. in
/mnt/141/sdb/6/1/monmail/traitement.php on line 21


<http://www.google.fr/search?q=%22Spam+detecte%2C+mail+non+envoye.%22>
<http://webnews.ft-sucks.com/thread-proxad.free.services.pagesperso-12986-_warning_mail_functionmail_spam_detecte_mail_.html>

Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Olivier Miakinen nous narre ce qui suit en ce 27/04/2007 20:15 :

Bien. Oublie donc les essais que tu as fait chez toi, et je te repose la
question pour l'hébergement chez Free : Win2k ou Unix ? Envoi vers un
port donné d'un serveur de mail ou vers un programme de style sendmail ?


Pas de port donné mais vers un programme de style sendmail.
Quand au système, il me semble bien que Free fonctionne avec le libre,
soit Unix.

Quel nom est configuré pour FROM et Return-Path ?


Sur Free ? Aucune idée.

Mais si, bien sûr ! À partir du moment où la machine utilise l'ensemble
de protocoles TCP/IP il y a de grandes chances pour que l'interface de
loopback s'appelle localhost avec l'adresse 127.0.0.1.


Avec EasyPHP, oui.
Tu parles bien de ma configuration en local, hein ?! (pas taper, siouplé !)

Grrr... tu n'as pas dit que d'un côté le message d'erreur était « je ne
peux pas me connecter à localhost:25 » et que de l'autre c'était « vous
faites du spam » ???


Si, si.
Mais aussi qu'il y avait une erreur à la ligne 21 ! (pas taper, siouplé !)

Fais gaffe, je suis patient, mais là je suis à la limite de tout laisser
tomber et de te laisser te démerder tout seul.


Calmos !

BIEN.


Ouf ! ;-)

Tu as déjà un script qui marche, pour pouvoir l'affirmer ? Parce que
pour le moment, ta fonction mail() te retourne une erreur,


L'autre script, oui, celui avec lequel nous nous escrimions tous les deux.

et P'tit
Marcel a signalé que cette fonction avait été modifiée par ledit hébergeur.


Apparemment non puisqu'avec son script, après corrections, je n'ai plus
de retour d'erreur et le serveur me renvoie bien le résultat du formulaire.
Ce script fonctionne donc parfaitement et je suis HEU-REUX ! :-)
(en attendant d'éventuelles extensions, peut-être)

Merci à toi de t'être penché avec patience sur mon problème. Le script
qui t'a fait arracher les cheveux dans ce fil doit donc comporter l'une
ou l'autre erreur mais ma méconnaissance de PHP ne me permet pas de la
détecter. Je vais toutefois tenter d'en savoir un peu plus, notamment
pour un autre besoin pour lequel je lance un nouveau fil.

Cordialement,
--
docanski

- Les Côtes du nord de la Bretagne par le sentier des douaniers
- Memento des champignons : le guide le plus complet du Web
- Et d'autres sujets encore sur ----> http://armorance.free.fr

1 2 3