5568 sujets

Sémantique web et HTML

Bonjour,
Je dois réaliser un formulaire qui permet d'envoyer certaines infos. Jusque là, il n'y a pas de soucis mais lorsque je test mes formulaires, l'email que je reçois n'est pas très lisible car il place les infos sur la même ligne et j'aimerai rendre sa plus lisible.

Ma question est donc: à partir du xhtml et du css, peut-on faire une mise en page (basique, style retour à la ligne, police en gras ou italic, etc.) de l'email qui sera envoyer via le formulaire. Sans php, je précise.

Merci
Modifié par lucifel (12 Oct 2009 - 14:39)
Si tu travailles en PHP, tu peux toujours rajouter le caractère \n pour effectuer le retour à la ligne

exple

 $msg   = $_POST['corps_mail'] . "\n";
Heyoan a écrit :

C'est un peu étonnant puisque tu vas bien utiliser php pour envoyer l'email non ?

Non justement, il n'y a pas de php. Le formulaire va juste envoyer des informations sélectionnées dans une liste déroulante.

a écrit :
Il te faut donc jouer sur l'attribut encType

<form action="mailto:..." method="..." enctype="text/plain">...</form> 



cf http://fr.selfhtml.org/html/formulaires/traiter.htm

David


Merci David, je pense que tu as résolu mon problème. Je teste pour voir si j'obtiens ce qu'il me faut.
Attention au mailto dans l'attribut action. cf. les specs :
a écrit :
L'élément FORM

action : %URI; #REQUIRED

Définition des attributs :
action = uri [CT]
Cet attribut spécifie l'agent pour le traitement du formulaire. Le comportement de l'agent utilisateur pour une valeur autre qu'un URI HTTP est indéfini.
En clair on ne peut absolument pas savoir comment va se comporter un UA quelconque ni même si le mail va être envoyé.
Heyoan a écrit :
En clair on ne peut absolument pas savoir comment va se comporter un UA quelconque ni même si le mail va être envoyé.


Donc si je comprend bien, le code suivant ne permettra pas forcément l'envoie de l'email ?
<FORM METHOD="POST" ACTION="mailto:panda@hotmail.com" ENCTYPE="text/plain">


hmm bon je reprend depuis le début, je dois réaliser une page avec un formulaire contenant les infos suivantes :
Nom de l'activité (ici y a une liste déroulante)
Nom
Prénom
Téléphone
Adresse

Envoyer (ici on envoie tt les infos vers une boite email)

Que pouvez vous me conseiller dans ce cas pour que l'email soit envoyé ?
Bon, je me suis tenté un petit script php (sur base d'un existant puisque sa fais un bon moment que j'ai plus touché au php).
Voici le code pour ma page formulaire.html :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>

		<title>Site web/Contact</title>

</head>

    <form method="post" action="envoimail.php" name="formulaire">
	
	Nom du ou des séjours choisis : <SELECT name="sejour">
		<OPTION VALUE="handiski">Handiski en Suisse</OPTION>
		<OPTION VALUE="espagne">Séjour d'Escpagne</OPTION>
		<OPTION VALUE="UnaBellaVita">Una bella vita in Itlia</OPTION>
	</SELECT><br /><br />

    Nom : <input name="nom" size="30" maxlength="50" type="text">

    <br /><br />
    Prénom : <input name="prenom" size="30" maxlength="50" type="text"><br /><br />
	
	Adresse : <input name="adresse" size="40" maxlength="50" type="text"><br /><br />
	Localité : <input name="localite" size="30" maxlength="50" type="text"><br /><br />
	Code postale : <input name="codepostale" size="30" maxlength="50" type="text"><br /><br />
	
	Téléphone : <input name="telephone" size="30" maxlength="50" type="text"><br /><br />

    E-mail : <input name="mail" size="30" maxlength="50" type="text"><br /><br />

    <input name="bouton" value="Envoyer" type="submit">

    </form> 

</body>

</html>


Et voici le script php de la page envoimail.php :
<?php

// récuperation des variables provenant du formulaire

$sejour = $_POST['sejour'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$mail = $_POST['mail'];
$adresse = $_POST['adresse'];
$localite = $_POST['localite'];
$codepostale = $_POST['codepostale'];
$telephone = $_POST['telephone'];

//E-mail auquel sera envoyé le formulaire
$destinataire = 'luc.beaupain@hotmail.com';

//sujet du mail envoyé
$sujet = 'Fiche de préinscription';

//test pour vérifier que les champs sont bien tous remplis !!

if( !empty($sejour) && !empty($nom) && !empty($prenom) && !empty($mail) && !empty($adresse) && !empty($localite) && !empty($codepostale) && !empty($telephone)){

// création du message, les \n permettent de faire un saut de ligne

$message = "Nom : $nom\n Prénom : $prenom\n E-mail : $mail\n Adresse = $adresse\n Localite : $localite\n Code postale : $codepostale\n Telephone : $telephone\n";

// On envoi le mail
if( mail($destinataire, $sujet, $message) )

// Si tout se passe bien on affiche un message de succès d'envoi

{ echo 'les informations on bien été envoyé!';

}

// Si on rencontre un problème de réseau (connection serveur etc...)

else{ echo 'une erreur est survenu lors de l\'envoi du message';

}

}

// Si tous les champs ne sont pas remplis

else{ echo 'merci de remplir tous les champs';

}
?>


Je l'ai testé en ligne et sa ne fonctionne pas. Il m'indique que l'email a été envoyer alors que je ne reçois rien Smiley decu
Juste au cas ou ... c'est pas hotmail qui provoquerai le problème ?

En tous cas, merci de votre aide Smiley smile
Modifié par lucifel (11 Oct 2009 - 17:14)
Un exemple simplifié :

contact.php
<?php
$sujet = 'Message depuis le site';
$destinataire = 'monemail@monsite.com';
$pageconfirme = 'confirm.php';
$activites = array(
    0 => 'Sélectionner',
    1 => 'Activité 1',
    2 => 'Activité 2',
    3 => 'Activité 3'
);
$erreurs = false;
# récupération ou initialisation des variables
$activite = !empty($_POST['activite']) ? intval($_POST['activite']) : 0;
$nom = !empty($_POST['nom']) ? trim(htmlspecialchars($_POST['nom'])) : '';
$prenom = !empty($_POST['prenom']) ? trim(htmlspecialchars($_POST['prenom'])) : '';
$telephone = !empty($_POST['telephone']) ? trim(htmlspecialchars($_POST['telephone'])) : '';
$adresse = !empty($_POST['adresse']) ? trim(htmlspecialchars($_POST['adresse'])) : '';

# vérification des champs postés
if ($_SERVER['REQUEST_METHOD']=='POST') {

	# vérification des champs obligatoires
	if ($activite <1 or $activite >= count($activites)) {
		$erreurs[] = "Merci de sélectionner une activité";
	}
	if (empty($nom)) {
		$erreurs[] = "Merci de renseigner votre nom";
	}
	if (empty($prenom)) {
		$erreurs[] = "Merci de renseigner votre prénom";
	}
	if (empty($telephone)) {
		$erreurs[] = "Merci de renseigner votre téléphone";
	}
	if (empty($adresse)) {
		$erreurs[] = "Merci de renseigner votre adresse";
	}
	# pas d'erreur -> envoi du mail
	if(!$erreurs) {
		$message = '<html><head>';
		$message .= '<title>'.$sujet.'</title>';
		$message .= '</head><body>';
		$message .= '<p>Activité : '.$activites[$activite].'</p>';
		$message .= '<p>Nom : '.$nom.'</p>';
		$message .= '<p>Prénom : '.$prenom.'</p>';
		$message .= '<p>Téléphone  : '.$telephone.'</p>';
		$message .= '<p>Adresse :<br>'.nl2br($adresse).'</p>';
		$message .= '</body></html>';
		# en-têtes
		$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
		// En-têtes additionnels
		$headers .= 'To: '.$destinataire. "\r\n";
		$headers .= 'From: '.$destinataire. "\r\n";
		# envoi du mail
		if (@mail($destinataire, $sujet, $message, $headers)) {
			header("Location: ".$pageconfirme);
			exit;
		 } else {
			$erreurs[] = "Echec lors de l'envoi du mail";
		 }
	} // if(!$erreurs)
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Contact</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
.alerte {
	color: red;
}
label {
	display: block;
}
</style>
</head>
<body>
<h1>Contact</h1>
<p>Merci de renseigner tous les champs</p>
<?php if ($erreurs) {
	foreach($erreurs as $erreur) {
		echo '<p class="alerte">'.$erreur."</p>\n";
	}
} 
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post">
	<p>
		<label for="activite">Activité</label>
		<select id="activite" name="activite">
		<?php
			foreach($activites as $key => $value) {
				$selected = $activite == $key ? ' selected="selected"' : '';
				echo '<option value="'.$key.'"'.$selected.'>'.$value."</option>\n";
			}
		?>
		</select>
	</p>
	<p>
		<label for="nom">Nom</label>
		<input id="nom" name="nom" maxlength="30" value="<?php echo $nom ?>" /> 
	</p>
	<p>
		<label for="prenom">Prénom</label>
		<input id="prenom" name="prenom" maxlength="30" value="<?php echo $prenom ?>" /> 
	</p>
	<p>
		<label for="telephone">Téléphone</label>
		<input id="telephone" name="telephone" maxlength="20" value="<?php echo $telephone ?>" /> 
	</p>
	<p>
		<label for="adresse">Adresse</label>
		<textarea id="adresse" name="adresse" rows="6" cols="30"><?php echo $adresse ?></textarea>
	</p>
	<p>
		<input type="submit" value="Envoyer" />
	</p>
</form>
</body>
</html>
confirm.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Confirmation</title>
</head>
<body>
<p>Votre mail a été envoyé.</p>
</body>
</html>

Modifié par Heyoan (11 Oct 2009 - 17:50)
Alors, je viens d'essayer ton script en ligne et j'ai le même soucis. Il m'indique que l'email a bien été envoyé mais je ne reçois rien sur ma boite mail.
Je suis hébergé chez OVH et d'après certains forum il faut attendre très longtemps pour recevoir les mails donc je vais attendre jusqu'à demain et on verra bien.
Je pencherais plutôt pour un problème lié aux adresses hotmail. Il faudrait essayer avec une autre (de ton domaine sur OVH par exemple).
Heyoan a écrit :
Je pencherais plutôt pour un problème lié aux adresses hotmail. Il faudrait essayer avec une autre (de ton domaine sur OVH par exemple).

Je viens d'essayer avec mon adresse ovh et mon adresse skynet mais sa marche toujours pas Smiley decu
Dans ce cas il faudrait déjà tester cette simple ligne :
mail('monemail@blabla.com', 'Un Sujet', 'Un message');
Si tu ne reçois rien adresse-toi à OVH.
Modifié par Heyoan (12 Oct 2009 - 06:17)
Lol je viens de recevoir tt mes mail aujourd'hui XD
Sa c'est du rapide Smiley smile
Enfin bon sa fonctionne il faut juste attendre quelques heures.

Eh bien, je vous dit merci à tous vous m'avez été d'une très grande aide.
Coucou,

moi aussi j'ai ce problème, mais je ne veux pas (parce que je ne peux pas) utiliser de php dans le formulaire.

Un simple retour à la ligne entre chaque entre il me faut Smiley smile

Merci
djaps a écrit :

Il te faut donc jouer sur l'attribut encType

<form action="mailto:..." method="..." enctype="text/plain">...</form>

cf http://fr.selfhtml.org/html/formulaires/traiter.htm
David

Je pense que cela répond à ta question mais comme Heyoan la expliqué plus haut, l'envoie de l'email n'est pas sûr donc tu peux te retrouver avec un formulaire qui n'envoie pas les mail. C'est pénible mais c'est vrai car avec cette méthode, je n'ai reçu aucun mail.
Je ne saurai malheureusement pas te donner d'alternative au php étant donné qu'il s'agit de la seul méthode fonctionnelle que l'on m'a fournis.