Aller au contenu

Sujets conseillés

Posté (modifié)

Bonjour à tous,

je souhaiterai m'envoyer par mail des infos recupéré par formulaire.

Je voudrais notament formater mes données de telle sorte que le nom et le prenom des personnes s'affichent l'un en dessous de l'autre dans le mail, et apres avoir essayé avec antislash n, ou r, ça ne marche pas , l'affichage a lieux sur la meme ligne :(

Il y a surement une erreur de syntaxe, mais je la vois pas :s

$message = "Nom :  $nom \r\n";
$message .= "Prénom : $prenom \r\n";

Si quelqu'un pouvait m'eclairer....

Modifié par broadcastor
Posté

En fait, ça va surtout dépendre de comment tu traites ta variable $message pour l'affichage dans ton mail.

Tu envoies le mail en format texte, ou HTML ?

On peut avoir un peu de code supplémentaire ?

Posté (modifié)

je l'envois en format texte; voici un peu plus de code, mais pour le moment je voulais juste faire un echo de $message:

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "From: $nom <$email>\r\nReply-to : $nom <$email>\nX-Mailer:PHP";
$subject="super sujet";
$destinataire="destinataire_AT_destinataire.com";
$message = "Nom : $nommedia\r\n";
$message .= "Prénom : $prenommedia\n";

if (mail($destinataire,$subject,$message,$headers)) {
$_SESSION['msg'] = $prenom.' '.$nom.' : votre formulaire a bien été envoyé';
}
else {
$_SESSION['msg'] = 'Il y a eu un probleme lors de l\'envois de votre formulaire';
}

_AT_v4np13: ca na pas marché, merci pour ton aide, merci aux autres

Modifié par broadcastor
Posté

Si tu fais un echo (dans ta page), c'est normal que ça foire (tant que ce n'est pas précisé, la page affichée est en text/html par défaut).

Essaye de l'entourer avec les balises <pre>

Mais sinon, dans le mail, c'est bon ?

Posté

Bonjour,

Dans le contexte d'un courriel en texte brut, "\n" (Linux), "\r\n" (Windows) et "\n\r" (Mac) représentent un retour à la ligne comme tu l'entends. Lorsque consulte un document (dans un fichier envoyé par un serveur HTTP, comme Apache) sans préciser que ce que tu veux envoyer est du texte brute, le document est interprété comme un fichier HTML et dans ce cas les retours de lignes ne signifient rien. Comme l'a dit birou, si tu veux un retour à la ligne en HTML c'est avec <br/> que cela est possible.

Comme tu souhaites envoyer un courriel en texte brute tu ne va pas utiliser <br/> (qui ne signifie rien hors du contexte HTML). Pour afficher les résultats comme le destinataire du courriel va le recevoir, tu peux utiliser cette méthode :

<pre><?php echo $message; ?></pre>

Dans la balises <pre> le contenu est interprété comme s'il s'agissait d'un fichier texte et donc les retour à la ligne sont effectifs.

Tu peux aussi opter pour une autre solution qui consiste à indiquer au navigateur (par un en-tête HTTP) que tu souhaites interpréter tout le contenu reçu au format texte brut :

<?php header("Content-type: text/plain"); ?>

Bonne continuation.

EDIT: Grillé...

Posté

Alors, avec le <br> ça marche. Maintenant, je me pose une question: le <br> marche parce que je fais un echo dans le code, mais apres dans le mail, est ce qu'il marchera toujours. Inversement, si antislash N ne marche pas en echo, peut etre marchera t'il dans le mail ....

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...