Question pour améliorer la fonction mail()

Résolu
fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention   -  
fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je vous donne mon code et vous explique ensuite :
<?
if ( isset($_POST['url']))
         $url=$_POST['url'];
if ( isset($_POST['nom']))
         $nom=$_POST['nom'];
if ( isset($_POST['email']))
         $email=$_POST['email'];
if ( isset($_POST['comment']) )
         $comment=$_POST['comment'];

if ($url && $nom && $email && $comment)
{
        echo '<html>
        <head>
        <title>Untitled Document</title>
        </head>
        <body>';

         mail("f.terrancle@neuf.fr", "
formulaire Web",               $nom."*".$email."*".$url."*".$comment);
         echo 'Mail envoyé
        </body>
        </html>';
}
else
{
        echo '<html><head><META HTTP-EQUIV="Refresh" CONTENT="5; 

URL=http://sons.gratuits.free.fr/formulaire.php"></head>';
        echo '<body>Merci de remplir tous les champs</body>';
}
?>
Comme vous pouvez le voir l'ors de l'envois du mail les champ récupérés sont séparés par des * donc voila ce que je voudrai faire :
est-il possible de faire une page html comme :
<HTML> Bonjour, un message a été envoyer voici les résultat :
nom :<?echo $nom?> <br>
email :<?echo $email?> <br> url:<?echo $url?> <br> commentaire :<?echo $comment?> et en fait faire dans la fonction mail un include de cette page? en faisant :

<?
if ( isset($_POST['url']))
$url=$_POST['url'];
if ( isset($_POST['nom']))
$nom=$_POST['nom'];
if ( isset($_POST['email']))
$email=$_POST['email'];
if ( isset($_POST['comment']) )
$comment=$_POST['comment'];

if ($url && $nom && $email && $comment)
{
echo '<html>
<head>
<title>Untitled Document</title>
</head>
<body>';

mail("f.terrancle@neuf.fr", "
formulaire Web", include "message.php");
echo 'Mail envoyé
</body>
</html>';
}
else
{
echo '<html><head><META HTTP-EQUIV="Refresh" CONTENT="5;

URL=http://sons.gratuits.free.fr/formulaire.php"></head>';
echo '<body>Merci de remplir tous les champs</body>';
}
?> merci d'avance.
Fabrice
A voir également:

10 réponses

Tasiot Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   7
 
Oui et non lol

Oui, il est possible d'envoyer un mail en html via la fonction mail() en jouant sur les headers.
et Non, ce n'est pas de cette méthode que tu y arriveras :).

Laisse moi le temps de te trouver les petits headers nécessaires et je te mijote ca.

Edition du message :

Euh, étant donné que tu n'as pas d'HTML à insérer réellement, tu pourrais faire tout simplement comme ca:

mail("f.terrancle@neuf.fr", "formulaire Web", "Bonjour, un message a été envoyer voici les résultat :
nom : " . $nom . "
email : " . $email . "
url: " . $url . "
commentaire : " . $comment);


Les retours à la ligne sont voulus.
0
fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention  
 
re, et si je fais un $message=include "message.php" et que j'insère ça dans la fonction mail? merci de me mijoter une petite idée !
0
Tasiot Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   7
 
Non, sauf erreur de ma part, include() ne renvoie rien, excepté peut être true ou false en fonction de son execution (true => inclusion réussie, false => erreur lors de l'inclusion).
Include() insére juste le fichier correspondant dans la page, à l'endroit où est placé include().

Regarde ma réponse d'avant, je l'ai modifié entre temps.
0
fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention  
 
re, oui c'est vrai j'avais pas pensé à celle là mais le pb c'est que là dedant on eput pas faire <br>... et moi c'est surtout ça que je cherche ! y a pas une petite fonction de retour à la ligne en php? merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tasiot Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   7
 
Ben si, là mon message sera envoyé et affiché avec les retours à la ligne dans les clients de messagerie tels que Outlook Express. Tu peux essayer.
Sinon pour créer ces retours à la ligne sans mettre un retour réel dans ton code, tu peux insérer ca :
\n
qui est un caractere spécial. Mais cela fera le même effet.

Sinon modifie le header comme ca:

mail("f.terrancle@neuf.fr", "formulaire Web", "Bonjour, un message a été envoyer voici les résultat :<br />
nom : " . $nom . "<br />
email : " . $email . "<br />
url: " . $url . "<br />
commentaire : " . $comment, "Content-type: text/html; charset=iso-8859-1");
0
fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention  
 
slt, ça y est c'est bon ! je s'avais pas qu'on pouvais mettre des retours à la ligne dans un code php (dans une fonction) vraiment j'en aprend tous les jours ! mmerci beaucoup à toi !
0
Tasiot Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   7
 
De rien, quand tu as un prob, n'hésite pas ^^
0
fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup...! tès j'ai une autre question mais juste des explications pour mieu comprendre un script que j'aimerai faire plutard :
j'aimerai faire un script de messagerie interne sur mon site qui consiste à ce que les membres puissent s'envoyer des messages... donc pour envoyer le message à un membre je pense savoir comment faire mais quand le destinataire se connecte comment aller voir qu'il a un message? c'est plutôt mental que j'arrive pas trop à me le représenter...
merci encore !
0
Tasiot Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   7
 
Si c'est pour faire une messagerie interne, et si tu possèdes MySQL, n'utilise pas la fonction mail(), ou très peu.

Crée toi une messagerie interne très simple mais qui peut s'avérer très puissante. Tu te crées une base de données et une table pour les utilisateurs. Tu penses à y mettre un id unique (avec autoincrement).
Après tu te crées une table contenant les messages et tu y stocke les messages comme ceci:
id => identifiant unique du message (avec autoincrement)
id_expediteur => identifiant de l'utilisateur qui envoie (donc celui stocké dans la table utilisateurs)
id_destinataire => identifiant de l'utilisateur qui doit recevoir le message
message => le message complet
etat => l'état du message (lu, non lu, archivé...)

Et voila le tour est joué, quand un membre envoie un message à un autre, il ne fait qu'ajouter son message dans la bdd MySQL comme je viens de te l'expliquer.
Pour le destinataire, il suffit que ton script regarde dans la base de données tous les messages dont l'identifiant du destinataire est celui de l'utilisateur.
Enfin, pour supprimer le message, il suffit juste de le supprimer de la base de données.

Après tu pourrais imaginer pourquoi pas un envoi de mail au destinataire lui signalant qu'il à un nouveau message privé dans son compte sur ton site. Cette fonction sera activable dans le profil du gars et donc enregistré dans la table des utilisateurs (genre un champs mail_nouveau_msg_prive à 1 si il l'a activé et à 0 s'il l'a désactivé).

Et voila mon gars, tu as tout pour faire une excellente messagerie privée.

Après, laisse couler ton imagination pour y ajouter des options telles qu'une boite d'archive des messages envoyés ou reçus, des accusés de reception pour l'expediteur quand le destinataire ouvre son message etc...

Bonne chance et bonne prog :)
0
fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention  
 
re, oui je pensai bien faire avec mysql maintenat que j'ai l'abitude de m'en servir finalement ce script n'a pas l'air bien compliqué quoi !
merci encore !
Fabrice
0