8711 sujets

Développement web côté serveur, CMS

Bonjour, je suis parvenu à coder un formulaire en HMTL puis à écrire un script PHP qui récupère les données du formulaire, et les envoie par email.

Seulement, je reçois les données de manière "brute" dans ma messagerie, c'est à dire uniquement le contenu des champs.

C'est normal me direz-vous. J'aimerais "passer à l'étape supérieure" en faisant en sorte que le message envoyé contiennent également des balises html. Pour faire court, je voudrais que mon message ressemble à ceci :

Nom du Client : Dupont

au lieu de simplement

Dupont

Je ne parviens pas à "inclure" cette partie : Nom du Client

Quelqu'un pourrait-il m'éclairer siouplaît ? Merci.
Bonjour,

Je suppose que tu utillises la fonction mail() ?

Si c'est le cas tu as juste à ajouter les headers :


$to = "adresse@email.fr";
$subject = "ton sujet";

$message="<html><head></head><body>ton contenu avec style à l'intérieur des balises</body></html>";

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

mail($to, $subject, $message, $headers);
@nikomachado : je suis allé voir, ça paraît très robuste en effet, merci pour l'info !

@mini-truc : j'utilise effectivement la fonction mail() mais je ne parviens pas à inclure, dans la variable $message, du texte qui ne vient pas des champs du formulaire :

le formulaire affiche : Votre Nom [Saisissez ici votre nom]
l'internaute saisit son nom et appuie sur "valider"
la fonction mail() s'exécute et envoie le mail
le mail contient [le nom] alors que moi, je souhaite que le mail contienne :

Voici le nom de l'internaute : [le nom]

C'est la partie "Voici le nom de l'internaute :" que je n'arrive pas à intégrer en PHP.
Il suffit de concaténer ta variable avec du texte.

Exemple :
Ici tu as que du texte :

$message="<html><head></head><body>[b]Nom de l'internaute :[/b] </body></html>";


En concaténant :

$message="<html><head></head><body>[b]Nom de l'internaute :[/b]".$ma_variable_nom." </body></html>";


Concaténer est à la base de l'apprentissage PHP, je te conseil d'aller y refaire un petit tour Smiley smile

PS : dans mon exemple, on est d'accord que ta $ma_variable_nom a été sécurisé avant d'être envoyer. NE JAMAIS FAIRE CONFIANCE A L'UTILISATEUR.
Si il tape un nom avec un " dedans, il va foutre en l'air ta variable $message.
@Apoooo

Extra merci ! C'est le coup de pouce dont j'avais besoin.
Concernant la sécurisation, aurais-tu un ou deux liens à me conseiller pour finaliser cette partie importante du script ? Merci.

Bien cordialement.
Bonjour à tous,

J'ai une petite question, je souhaiterai envoyer un message écrit dans un page externe:

au lieu de ceci:
$message="<html><head></head><body>Nom de l'internaute :".$ma_variable_nom." </body></html>";
(le message est dans la même page d'envoi)

Mais quelque chose dans ce genre:
$message="http://www.mapage.com/email.php";
Je n'ai pas si vous avez compris...

Merci pour ce qui arriverons à m'aider car je galère depuis 1 semaine en vain.
J'ai réussi tout seul Smiley smile

avec file_get_contents:

$message=file_get_contents(http://www.mapage.com/email.php)

Mais par contre mes variables dans email.php ne s'affiche plus... pourtant j'ai ouvert une session dedans.

Cela va peut-être faire rire certains mais je tiens à préciser que je suis très très novice et je patauge...

Merci pour votre aide...
Hello, je regrette mais mais compétences en PHP sont extrêmement limitées.
Très frustrant d'ailleurs.
J'espère que ce forum t'apportera la réponse... je n'en doute pas, c'est un excellent forum.
Modérateur
Bonjour, file_get_content récupèrera le contenu de ton fichier mais n’exécute pas le php à l'intérieur. Pour obtenir le contenu d'un fichier avec le php exécuté, on l'inclut et généralement on blocke la sortie pour obtenir le contenu dans une variable (système de template). Voici un exemple de fonction très basique pour gérer cela:


function file_get_template($path){
  ob_start();
  include $path; 
  return ob_get_clean();
}

$message = file_get_template('email.php');
Bonjour ,

je suis entrains de créer un site internet que je n'ai pas encore achever, cependant j'ai créer une page contact.html mais je voudrai ajouter un code php qui me permettra de recevoir des mail de contact directement sur ma boite mail.j'ai essayer plusieurs code mais ça n'a pas abouti a grands chose, je m'adresse a jean sam en particulier s'il peut me transmettre le script php qu'il a utilisé je lui serai très reconnaissant j'ai une soutenance et je n'arrive pas a débloque mon souci.

merci d'avance
Hello, voici le code du script.
Auparavant, il te faut coder le formulaire (dans une autre page) ET inclure PHPMAILER dans ton processus.
Perso ça m'a pris 3 jours donc je reste à ta dispo Smiley smile
Cordialement.

<?php 
/*
Template Name: page-contact-ok
*/
?>

<?php 	// Formulaire OK qui envoit des mails au format TXT
		// avec retour à la ligne
		// et avec échappement des caractères HTML contrôlé qualité 19.09.2013
		// et ajout code pour éviter formulaire serve à envoyer des SPAM contrôlé qualité 08.10.2013
?>


<?php // Codage PHP du formulaire

		// Récupération des données du formulaire

	$prenom_nom = $_POST['prenom_nom'];
	$numero_tel = $_POST['numero_tel'];
	$adresse_mail = $_POST['adresse_mail'];
	$message = $_POST['message'];
	$anti_spam= $_POST['anti_spam'];
	
	$prenom = $_POST["prenom"]; // inutile

	?>

<?php // Gestion des compatibilités sauts de line \n ou \r\n

	$votre_mail = "METTRE ICI TON MAIL";
	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $votre_mail))
    $saut = "\r\n";
    else $saut = "\n";

    ?>

<!--Protecting from spam source  http://www.stevedawson.com/scripts/contact-form.php  ****-->
<?php
$SpamErrorMessage="No websites URLs permitted";
if (preg_match("/http/i", "$prenom_nom")) {echo "SpamErrorMessage";exit();}
if (preg_match("/http/i", "$numero_tel")) {echo "SpamErrorMessage";exit();}
if (preg_match("/http/i", "$adresse_mail")) {echo "SpamErrorMessage";exit();}
if (preg_match("/http/i", "$message")) {echo "SpamErrorMessage";exit();}
if ($anti_spam !=10) {echo "SpamErrorMessage";exit();}
?>

<?php // Codage PHP du formulaire

		// Utilisation de PHPMailer

	require 'PHPMailer/class.phpmailer.php';

	//Create a new PHPMailer instance
	$mail = new PHPMailer();
	// Code properly the charset
	$mail->CharSet = 'UTF-8';
	// Indique le nom de l'expéditeur (le site du client)
	$mail->FromName="METTRE ICI LE NOM DE L'EXPEDITEUR";
	//Recuperation adresse mail expediteur
	$mail->SetFrom=$adresse_mail;
	//Indique à qui sera envoye l'email (le client qui détient le site internet)
	$mail->AddAddress('METTRE ICI LE MAIL DU DESTINATAIRE');
	// Indique le Blind Carbon Copy
	$mail->AddBCC("METTRE ICI LE MAIL DU DESTINATAIRE EN COPIE");
	//Indique l'objet du mail
	$mail->Subject = 'METTRE ICI LE MESSAGE DU SITE INTERNET';
	//Read an HTML message body from an external file, convert referenced images to embedded, convert HTML into a basic plain-text alternative body
	$mail->Body = (
	"Prénom, NOM :" .htmlspecialchars($prenom_nom, ENT_QUOTES,'UTF-8').$saut.
	"Numéro de téléphone :" .htmlspecialchars($numero_tel, ENT_QUOTES,'UTF-8').$saut.
	"Adresse E-mail :" .htmlspecialchars($adresse_mail, ENT_QUOTES,'UTF-8').$saut.
	"Message :" .htmlspecialchars($message, ENT_QUOTES,'UTF-8'));  
			
?>

<!--Codage de la page **********************************************************************-->

<?php get_header();?>

<?php get_template_part('nav');?>

	<div class="content">

		<div class="post">

			<?php
			
				if(!$mail->Send()) {

					?>
				
						<div class="large100" style="margin-bottom: 1.3rem">
							<img src="<?php bloginfo( 'template_url' );?>/images/ico-mail-fotolia-280-180.png" width="280" height="180" class="alignnone size-full wp-image-177" />
							<h1>Bummer !</h1>
							<h2>You mail did not get trough !</h2>
							<p>Votre mail ne nous est pas parvenu pour une raison bizarroïde. Prenez votre courage à deux mains et joignez-nous téléphoniquement au <a href="tel:+33METTRE ICI LE NUMERO DE TELEPHONE">METTRE ICI LE NUMERO DE TELEPHONE</a>, vous gagnerez un temps précieux.</p>
						</div>
						<div class="clear"></div>
					
					<?php }

				else {

					?>

						<div class="large100" style="margin-bottom: 1.3rem">
							<img src="<?php bloginfo( 'template_url' );?>/images/ico-mail-fotolia-280-180.png" width="280" height="180" class="alignnone size-full wp-image-177" />
							<h1>Oorah !</h1>
							<h2>You are part of the Team now !</h2>
							<p>Votre mail nous est bien parvenu et nous allons donner suite très rapidement (24h maximum).</p>
						</div>
						<div class="clear"></div>
	
					<?php }

					?>

		</div><!--post-->

	</div><!--content-->
	
<?php get_footer();?>
Bonjour Jean Sam,
je retourne vers vous pour le script, le seul souci que j'ai c'est au niveau de la condition d'envoi de mail, l'envoi sera pour une seule personne permanente mais on doit inspecter un fichier texte afin d'envoyer le mail, le fichier texte contient des lignes relatives a des alertes, lorsqu'on lit la présence d'une ligne on envoi le mail.

Merci pour votre aide et soutien
Bonjour tout le monde,
J aime bien la discussion, juste une question est ce que je peux faire du mailing juste avec un script php . J'ai besoin d'un coup de main et merci Smiley smile
Bonjour,

Encore une fois, je ne suis pas expert, mais je crois pouvoir dire qu'un script php ne suffira pas, il faut un serveur derrière.
Rebonjour
Merci pour la réponse, en fait si j’établis un script php sous le serveur Apache et je lui donne une liste d emails, vous pensez que c est pas sufissant ?. Et encore merci pour vos conseils . Smiley smile
bonjours tous le monde, es ce que quelqu'un peut m'aidez ?;;;;
alors, voilà, j'ai un site web et pour le formulaire contacte j'ai trouvé sa sur internet, et il me manque juste le fichier mail.php je crois ?
-------- le code de la page contacte.html
<div class="col-md-12">
<div class="contact-form">
<div class="row">
<form action="mail.php">
<fieldset class="col-md-4">
<input id="name" type="text" name="name" placeholder="Name">
</fieldset>
<fieldset class="col-md-4">
<input type="email" name="email" id="email" placeholder="Email">
</fieldset>
<fieldset class="col-md-4">
<input type="text" name="subject" id="subject" placeholder="Subject">
</fieldset>
<fieldset class="col-md-12">
<textarea name="message" id="message" placeholder="Message"></textarea>
</fieldset>
<fieldset class="col-md-12">
<input type="submit" name="send" value="Send Message" id="submit" class="button">
</fieldset>
</form>
</div> <!-- /.row -->
</div> <!-- /.contact-form -->
</div> <!-- /.col-md-12 -->
</div> <!-- /.row -->
</div> <!-- /.contact -->
---------------------------------------------------------------------------------------
il me manque juste le fichier mail.php bien sur avec le code adéquate par rapport a mon fichier contacte.htlm
je remercie d'avance tous ceux qui m'aiderai .
Modifié par jaguar-blanc (21 Sep 2017 - 12:07)
Bonjour j'ai un site web et pour le formulaire contact et il me manque juste le fichier mail.php mais je veux pouvoir fait la redirection directement automatiquement dans le ficher
 mail.php  







<div id="fh5co-contact" class="fh5co-section-gray">
			<div class="container">
				<form action="mail.php">
					<div class="row animate-box">
						
						<div class="col-md-6">
							<div class="row">
								<div class="col-md-6">
									<div class="form-group">
										<input type="text" class="form-control" placeholder="Name">
									</div>
								</div>
								<div class="col-md-6">
									<div class="form-group">
										<input type="text" class="form-control" placeholder="Email">
									</div>
								</div>
								<div class="col-md-12">
									<div class="form-group">
										<textarea name="" class="form-control" id="" cols="30" rows="7" placeholder="Message"></textarea>
									</div>
								</div>
								<div class="col-md-12">
									<div class="form-group">
										<input type="submit" value="Send Message" class="btn btn-primary">
									</div>
								</div>
							</div>
						</div>
					</div>
				</form>
			</div>
		</div> 

Modifié par posidius09 (30 Aug 2018 - 13:47)