Problème avec fonction mail ()
zatox
Messages postés
640
Date d'inscription
Statut
Membre
Dernière intervention
-
avion-f16 Messages postés 19255 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19255 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je n'arrive plus à faire marcher la fonction mail (). Depuis les sites que j'ai créé, on a la possibilité d'envoyer un mail par un formulaire. Voici mon code:
if(@mail($to, $objet, $texte, $mailheaders)==false)
{
echo "Problème envoi mail: veuillez réessayer plus tard";
}
else
{
echo "Mail envoyé avec succès à " . $to;
}
Chaque fois que j'envoie un formulaire, j'ai bien le message Mail envoyé avec succès à " . ici l'adresse du sestinataire est bonne mais le destinataire (en l'occurence c'est moi) n'a jamais de message. Pourtant cette fonction a marché telle qu'elle est écrite et maintenant elle ne marche plus ni en test sur mon disque ni chez mon hébergeur ovh.
Est-ce que quelqu'un aurait une idée ? merci pour vos réponses.
if(@mail($to, $objet, $texte, $mailheaders)==false)
{
echo "Problème envoi mail: veuillez réessayer plus tard";
}
else
{
echo "Mail envoyé avec succès à " . $to;
}
Chaque fois que j'envoie un formulaire, j'ai bien le message Mail envoyé avec succès à " . ici l'adresse du sestinataire est bonne mais le destinataire (en l'occurence c'est moi) n'a jamais de message. Pourtant cette fonction a marché telle qu'elle est écrite et maintenant elle ne marche plus ni en test sur mon disque ni chez mon hébergeur ovh.
Est-ce que quelqu'un aurait une idée ? merci pour vos réponses.
A voir également:
- Problème avec fonction mail ()
- Fonction si et - Guide
- Windows live mail - Télécharger - Mail
- Publipostage mail - Accueil - Word
- Créer une adresse mail hotmail - Guide
- Comment télécharger un mail - Guide
17 réponses
Bonsoir,
j'ai eu le même soucis sur ovh
ton header doit ressembler à ça :
Ensuite tu fais :
cordialement
j'ai eu le même soucis sur ovh
ton header doit ressembler à ça :
$headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\n"; $headers .= "From: $votremail\nReply-to : $votremail\nX-Mailer:PHP";
Ensuite tu fais :
if(mail($destinataire,$objet,$message,$headers)){ echo "ok"; }else{ echo "pb";
cordialement
OK, merci pour ta réponse, j'ai fais ce que tu m'as dit, je l'ai testé pour le moment sur mon disque, ça marche, donc c'est déjà un pas important ensuite j'ai 2 problèmes:
1) Pas très important il me mets le message dans le dossier spam, ça, à la rigueur je m'en fout un peu vu qu'avant de jeter mes spams je regarde d'où ça vient.
2) Le deuxième problème est plus embêtant car dans mon formulaire je fais saisir l'adresse mail de la personne qui va envoyer le message afin de pouvoir lui répondre. Je récupère bien cette zone mais je ne sais pas où la mettre afin que lorsque je fais répondre j'ai bien dans le destinataire l'adresse mail de la personne. Actuellement si je fais répondre comme destinataire j'ai: "system user for php <apache@localhost>"
J'ai essayé de mettre dans le troisième headers from: $votremail dans $votremail l'adresse mail que je récupère mais ça ne marche pas. Est-ce que tu sais à quel endroit je dois charger cette zone ?
merci pour les réponses
je récupère dans mon script l'adresse mail de la personne, et j'aimerai bien que quand je fais répondre
1) Pas très important il me mets le message dans le dossier spam, ça, à la rigueur je m'en fout un peu vu qu'avant de jeter mes spams je regarde d'où ça vient.
2) Le deuxième problème est plus embêtant car dans mon formulaire je fais saisir l'adresse mail de la personne qui va envoyer le message afin de pouvoir lui répondre. Je récupère bien cette zone mais je ne sais pas où la mettre afin que lorsque je fais répondre j'ai bien dans le destinataire l'adresse mail de la personne. Actuellement si je fais répondre comme destinataire j'ai: "system user for php <apache@localhost>"
J'ai essayé de mettre dans le troisième headers from: $votremail dans $votremail l'adresse mail que je récupère mais ça ne marche pas. Est-ce que tu sais à quel endroit je dois charger cette zone ?
merci pour les réponses
je récupère dans mon script l'adresse mail de la personne, et j'aimerai bien que quand je fais répondre
Bonjour, euh je rectifie un peu ce que j'ai dis dans mon précédent message, à savoir que chez mon hébergeur, maintenant la fonction mail marche, et je reçois les messages dans ma boîte non pas dans les spams mais bien dans mon courrier. Par contre l'expéditeur du message est: monsite@start.ovh.net
Ce qui fait que si je fais répondre dans le but de répondre et d'établir un dialogue avec la personne qui m'a écri, je vais répondre à monsite@start.ovh.net qui n'est autre qu'une boîte aux lettres qui m'appartient chez mon hébergeur OVH. Je voudrais donc savoir s'il est possible au niveau des headers de dire que l'expéditeur du message c'est par exemple alex.dupont@laposte.net de telle sorte que quand je fais répondre, je vais répondre à alex.dupont@laposte.net qui est la personne qui a envoyé le message via mon formulaire ?
merci pour vos réponses.
Ce qui fait que si je fais répondre dans le but de répondre et d'établir un dialogue avec la personne qui m'a écri, je vais répondre à monsite@start.ovh.net qui n'est autre qu'une boîte aux lettres qui m'appartient chez mon hébergeur OVH. Je voudrais donc savoir s'il est possible au niveau des headers de dire que l'expéditeur du message c'est par exemple alex.dupont@laposte.net de telle sorte que quand je fais répondre, je vais répondre à alex.dupont@laposte.net qui est la personne qui a envoyé le message via mon formulaire ?
merci pour vos réponses.
Tu dois utiliser les entêtes si tu veux préciser le "From" et le "Reply-To".
https://www.php.net/manual/fr/function.mail.php : le deuxième exemple fonctionne très bien.
https://www.php.net/manual/fr/function.mail.php : le deuxième exemple fonctionne très bien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir, je me suis peut-être mal exprimé, oui j'utilise bien les entêtes comme indiqué mais dans le message que je reçois dans ma boîte aux lettres (c'est moi qui reçois vu que dans $to j'ai mis mon e-mail) j'ai toujours dans l'expéditeur: <apache@localhost> en test sur mon disque ou monsite@start.ovh.net sur mon hébergeur.
Or dans from j'ai bien mis la variable que j'ai récupérée et qui contient l'adresse mail de la personne qui rempli le formulaire par exemple supposons que la personne qui rempli le formulaire mets dans l'adresse mail qu'il saisi : alex.dupont@laposte.net ce que je voudrais c'est que dans le message que je reçois avoir comme expéditeur alex.dupont@laposte.net de façon à ce que lorsque je fais répondre au message que j'ai reçu dans ma boîte je réponde bien à alex.dupont@laposte.net et non pas à <apache@localhost> ou monsite@start.ovh.net
voici ce que j'ai codé dans le headers
$headers = 'From: $from' . "\r\n" .
//'Reply-To: $from' . "\r\n" .
//'X-Mailer: PHP/' . phpversion();
dans la variable $from j'ai bien l'adresse de la personne c'est à dire dans mon example alex.dupont@laposte.net
mais dans ma boîte non j'ai comme expéditeur soit <apache@localhost> soit monsite@start.ovh.net selon que je suis en test ou sur mon site.
Comme je veux une variable dans le headers ($from) peut-être que c'est mal codé ? je ne sais pas si quelqu'un a une idée merci pour votre aide.
Or dans from j'ai bien mis la variable que j'ai récupérée et qui contient l'adresse mail de la personne qui rempli le formulaire par exemple supposons que la personne qui rempli le formulaire mets dans l'adresse mail qu'il saisi : alex.dupont@laposte.net ce que je voudrais c'est que dans le message que je reçois avoir comme expéditeur alex.dupont@laposte.net de façon à ce que lorsque je fais répondre au message que j'ai reçu dans ma boîte je réponde bien à alex.dupont@laposte.net et non pas à <apache@localhost> ou monsite@start.ovh.net
voici ce que j'ai codé dans le headers
$headers = 'From: $from' . "\r\n" .
//'Reply-To: $from' . "\r\n" .
//'X-Mailer: PHP/' . phpversion();
dans la variable $from j'ai bien l'adresse de la personne c'est à dire dans mon example alex.dupont@laposte.net
mais dans ma boîte non j'ai comme expéditeur soit <apache@localhost> soit monsite@start.ovh.net selon que je suis en test ou sur mon site.
Comme je veux une variable dans le headers ($from) peut-être que c'est mal codé ? je ne sais pas si quelqu'un a une idée merci pour votre aide.
Bonsoir, euh excuses les lignes de codes que j'ai indiquée c'est une ancienne version, j'ai bien mis ceci:
$headers = 'From: $from' . "\r\n" .
'Reply-To: $from' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
et dans mon message l'expéditeur c'est <apache@localhost>
d'ailleurs j'ai fais plusieurs tests, je peux mettre n'importe quoi dans from: et Reply to: ici je mets des variables mais si j'écris
$headers = 'From: alex.dupont@laposte.net' . "\r\n" .
'Reply-To: alex.dupont@laposte.net' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
et bien dans l'expéditeur j'ai toujours <apache@localhost>
?!!!!!!!!!! mystère je dois surement avoir une erreur de syntaxe mais je ne sais pas où.
$headers = 'From: $from' . "\r\n" .
'Reply-To: $from' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
et dans mon message l'expéditeur c'est <apache@localhost>
d'ailleurs j'ai fais plusieurs tests, je peux mettre n'importe quoi dans from: et Reply to: ici je mets des variables mais si j'écris
$headers = 'From: alex.dupont@laposte.net' . "\r\n" .
'Reply-To: alex.dupont@laposte.net' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
et bien dans l'expéditeur j'ai toujours <apache@localhost>
?!!!!!!!!!! mystère je dois surement avoir une erreur de syntaxe mais je ne sais pas où.
Oups mille excuses je n'utilisais pas la bonne variable dans headers dans la fonction mail bon voici le code complet:
$headers = 'From: $from' . "\r\n" .
'Reply-To: $from' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $objet, $texte, $headers))
{
echo "Mail envoyé avec succès à " . $to;
}
else
{
echo "Problème envoi mail: veuillez réessayer plus tard";
}
là dans l'expéditeur j'ai: $from@start.ovh.net alors que je voudrais avoir ce qu'il y a dans la variable $from
$headers = 'From: $from' . "\r\n" .
'Reply-To: $from' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $objet, $texte, $headers))
{
echo "Mail envoyé avec succès à " . $to;
}
else
{
echo "Problème envoi mail: veuillez réessayer plus tard";
}
là dans l'expéditeur j'ai: $from@start.ovh.net alors que je voudrais avoir ce qu'il y a dans la variable $from
oui je suis d'accord avec toi, j'ai essayé plusieurs trucs mais ça ne marche pas est-ce que toi tu as une variable dans from ou bien est-ce que c'est une constante ? si c'est une variable je veux bien profiter de la syntaxe, ou alors ça veux dire que ce n'est pas possible de positionner une variable au niveau des headers ? ça m'étonne un peu mais bon, dans ce cas je n'ai pas de soluce.
$headers = 'From: '.$from . "\r\n" . 'Reply-To: '.$from . "\r\n" . 'X-Mailer: PHP/' . phpversion(); if(mail($to, $objet, $texte, $headers)) { echo "Mail envoyé avec succès à " . $to; } else { echo "Problème envoi mail: veuillez réessayer plus tard"; }
Bonjour, non, désolé ça ne marche pas, si ça marche chez toi (sur OVH) peut-être qu'il y a une variable à positionner dans le php.ini mais là je ne sais pas laquelle si tu as une idée ?!!! merci pour ton aide.
Il n'y a rien à faire, la configuration par défaut sur OVH permet de le faire.
Es-tu sûr que $from est définie ?
Es-tu sûr que $from est définie ?
Bonsoir, ben oui, voici le bout de code concerné:
echo "Voici le $ from en question = " . $from;
$headers = 'From: $from' . "\r\n" .
'Reply-To: $from' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $objet, $texte, $headers))
{
echo "Mail envoyé avec succès à " . $to;
}
else
{
echo "Problème envoi mail: veuillez réessayer plus tard";
}
Ce que m'affiche le echo :
Voici le $ from en question = alex.dupont@laposte.net
Ce que j'ai dans ma boîte aux lettres:
de $from@localhost
répondre à $from@localhost
date 17 janvier 2010 01:48
objet Test
masquer les détails 01:48 (Il y a 3 minutes)
- Masquer le texte des messages précédents -
Nom: DUPONT
Prénom: Alexandre
Adresse mail: alex.dupont@laposte.net
Téléphone: 05.55.52.50.02
Message: C'est un test
Tu vois que si je fais répondre, je vais répondre à $from@localhost au lieu de répondre à alex.dupont@laposte.net (bon là je suis sur mon disque ok )
Voilà, il y a peut-être un truc gros comme une barraque mais je vois pas quoi.
Bonne nuit et merci.
echo "Voici le $ from en question = " . $from;
$headers = 'From: $from' . "\r\n" .
'Reply-To: $from' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $objet, $texte, $headers))
{
echo "Mail envoyé avec succès à " . $to;
}
else
{
echo "Problème envoi mail: veuillez réessayer plus tard";
}
Ce que m'affiche le echo :
Voici le $ from en question = alex.dupont@laposte.net
Ce que j'ai dans ma boîte aux lettres:
de $from@localhost
répondre à $from@localhost
date 17 janvier 2010 01:48
objet Test
masquer les détails 01:48 (Il y a 3 minutes)
- Masquer le texte des messages précédents -
Nom: DUPONT
Prénom: Alexandre
Adresse mail: alex.dupont@laposte.net
Téléphone: 05.55.52.50.02
Message: C'est un test
Tu vois que si je fais répondre, je vais répondre à $from@localhost au lieu de répondre à alex.dupont@laposte.net (bon là je suis sur mon disque ok )
Voilà, il y a peut-être un truc gros comme une barraque mais je vois pas quoi.
Bonne nuit et merci.
Euh même si je fais ça
$headers = 'From: '.$from . "\r\n" .
'Reply-To: '.$from . "\r\n" .
'X-Mailer: PHP/' . phpversion();
ça marche pas non plus bon je refais mes tests demain ou lundi parceque là je vois plus très clair.
$headers = 'From: '.$from . "\r\n" .
'Reply-To: '.$from . "\r\n" .
'X-Mailer: PHP/' . phpversion();
ça marche pas non plus bon je refais mes tests demain ou lundi parceque là je vois plus très clair.
Bonjour, tu ne tiens pas compte de mes 2 derniers messages, hier soir il était tard et je n'avais pas les yeux en face des trous, donc voici le code, c'est celui que tu m'avais donné et ça marche:
$headers = 'From: '.$from . "\r\n" .
'Reply-To: '.$from . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $objet, $texte, $headers))
{
echo "Mail envoyé avec succès à " . $to;
}
else
{
echo "Problème envoi mail: veuillez réessayer plus tard";
}
Et merci encore.
$headers = 'From: '.$from . "\r\n" .
'Reply-To: '.$from . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $objet, $texte, $headers))
{
echo "Mail envoyé avec succès à " . $to;
}
else
{
echo "Problème envoi mail: veuillez réessayer plus tard";
}
Et merci encore.
"est-ce que toi tu as une variable dans from ou bien est-ce que c'est une constante ?"
Ça ne change rien.
Si toi tu utilises une constante, alors ne mets pas le "$" devant le nom de ta constante.
Tu n'as toujours pas corrigé le code par ce que je t'avais donné à la réponse #11. Les variables entre apostrophes ne sont pas remplacées par leur valeur ! Donc soit tu mets des guillemets soit tu fais la concaténation :
Ça ne change rien.
Si toi tu utilises une constante, alors ne mets pas le "$" devant le nom de ta constante.
Tu n'as toujours pas corrigé le code par ce que je t'avais donné à la réponse #11. Les variables entre apostrophes ne sont pas remplacées par leur valeur ! Donc soit tu mets des guillemets soit tu fais la concaténation :
$headers = 'From: ' . $from . "\r\n" . 'Reply-To: ' . $from . "\r\n" . 'X-Mailer: PHP/' . phpversion();