Page 1 sur 1
Modification d'un formulaire multi-destinataire
Posté : 01 juin 2006, 20:10
par christ
Bonjour,
J'ai un scrip de formulaire multi-destinataires.
J'essaye de le modifier pour la raison suivante :
lorsque l'internaute envoie un message au destinataire qu'il a sélectionné, ça fonctionne bien.
Lorque le destinataire reçoit le message, le nom de l'expéditeur est NOBODY avec l'adresse de l'administrateur (configuré pour les retour d'erreur).
Comment faire pour que le nom de l'expéditeur soit l'adresse de l'internaute qui a réellement envoyé le message.
J'ai modifié plusieurs paramètres mais sans succès, et je tatonne encore le php, donc...
si quelqu'un est intéressé par le script et aussi à m'aider,
le script est à cette adresse :
http://www.gitedureveur.com/contact_multi.zip
Merci
Christ
Posté : 01 juin 2006, 23:52
par jpaul
Pour modifier le nom de l'expéditeur tu peux t'inspirer de :
http://fr2.php.net/manual/fr/function.mail.php
Tu regardes l'exemple 2 :
<?php
$to = '[email protected]';
$subject = 'le sujet';
$message = 'Bonjour !';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
Il te suffit de remplacer les adresses des 2 lignes :
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
par :
$headers = 'From: ' . $monemetteur . "\r\n" .
'Reply-To: ' . $monreplyto . "\r\n" .
en ayant initialisé les variables $monemetteur et $monreplyto bien sur...
Posté : 02 juin 2006, 00:02
par christ
Bonjour Jpaul,
Alors effectivement, j'ai vu a peu près la même chose sur NEXEN où ya les fonctions php.
Et finalement, j'ai vu ce code (dans la page contact.php)
if(!mail($dest,$sujet,$body, $headers, "-f $From"))
Où il y avait à la place de $From, $undelivered.
($undelivered est l'adresse où les courriels non délivrés arrivent, je ne vois pas à quoi ça peut servir dans le script, les courriels arrivent sur des adresses déjà écrites, l'internaute n'a qu'à en sélectionner une, donc pas de risque d'erreur).
par contre, si j'enlève les guillemets à -f $From, ça ne fonctionne pas.
et si j'enlève -f non plus.
Et ça marque toujours dans l'expéditeur le nom NOBODY (par contre l'adresse est bien celle de l'expéditeur).
Je n'arrive pas à voir comment mettre la variable $Name à la place de NOBODY.
Pour la définition de headers comme tu l'a marqué plus haut, j'avais fait ça mais ça ne fonctionnait pas mieux.
voilà, si tu as une idée pour la variable $Name à la place de NOBODY, je suis toute ouie.
Merci
Christ
Posté : 02 juin 2006, 08:09
par jpaul
Comme ça, je ne vois pas, ce que tu décris ne me dis rien, mais peut être avec un bout de code...
Oups, je n'avais pas vu le lien, je regarde...
Posté : 02 juin 2006, 09:26
par jpaul
As-tu fait un test en remplaçant le
, "-f $undelivered"
par rien du tout dans :
if(!mail($dest,$sujet,$body, $headers, "-f $undelivered"))
Ca donne quoi ?
Il me semble comprendre que le -f blablabla est étroitement lié à sendmail, ça doit être un peu particulier.
Perso, je n'ai pas encore utilisé ce paramètre.
Posté : 02 juin 2006, 12:28
par christ
Salut !
Alors je viens d'essayer, et ça marche pas.
J'ai essayé plein de trucs sans succès.
Posté : 02 juin 2006, 15:03
par jpaul
Hum ce que je peux dire, c'est que sur windows, avec php.ini contenant :
sendmail_from=
[email protected] ; for Win32 only
SMTP = serveur.mon.domaine ; for Win32 only
smtp_port = 25
je reçois un message dont l'entête est :
avec ce script :
<?
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$dest="[email protected]";
$undelivered="[email protected]";
$sujet="essai";
$body="texte de l'essai";
if(!mail($dest,$sujet,$body, $headers, "-f $undelivered")) {
echo "<BR>Problème...";
}
else {
echo "<BR>OK...";
}
phpinfo();
?>
Il semble que le '-f...' soit innopérant sous windows : je n'ai pas de
[email protected] dans le message reçu.
As-tu bien renseigné le header avec les champs from et Reply-To ?
Est-tu sous unix/linux ou bien windows ?
Posté : 02 juin 2006, 19:00
par christ
Le serveur est unix/linux.
Dans ton script, ya un truc qui cloche dans le headers non ?
Il faudrait plutôt :
Code : Tout sélectionner
$headers = 'From: $From' . "\r\n" .
'Reply-To: $From' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
J'ai remplacé
[email protected] par $From,
car ce que je cherche c'est que ce soit l'adresse de l'expéditeur (que l'internaute indique dans son message)
Mais j'ai déjà essayé ça sur le script.
Ca affiche toujour le NOBODY, par contre, l'adresse derrière est bien celle de l'internaute expéditeur.
Et en fait, à la place du NOBODY, j'aurais aimé avoir $Pseudo (que l'internaute indique dans le champs "nom").
Posté : 03 juin 2006, 13:32
par jpaul
Hum intéressant ça !
Je n'ai pas le temps de revenir sur tes scripts mais as-tu essayé une adresse du type :
"-f pseudo <
[email protected]>" ?
si comme je crois comprendre en lisant :
Ca affiche toujour le NOBODY, par contre, l'adresse derrière est bien celle de l'internaute expéditeur.
tu as un truc du genre :
NOBODY <
[email protected]>
ça devrait résoudre ton problème...