Comment prédéfinir l'objet d'un mail envoyer en PHP

gmatg -  
 gmatg -
Salut à tous,
J'aimerai prédéfinir l'objet du mail que l'utilisateur envoie grâce à mon formulaire de contact.
En fait, je prédéfinis l'objet du mail que je recevrai dans ma boite mail, et l'objet que l'utilisateur a donner (depuis le formulaire), s'afficherai dans le mail (en lui même)
Si quelqu'un peut m'éclairer ...
Merci beaucoup à vous

Mon code PHP :

<?php

echo'<link href="style.css" rel="stylesheet" type="text/css">';

$destinataire = '***@***';
 
$copie = 'oui';
$position_arobase = strpos($_POST['mail'], '@');
 
$message_envoye = "Votre message nous est bien parvenu, l'équipe vous répondera le plus vite possible !";
$retour_accueil = "Pour revenir à <a href=\"Accueil.html\">l'accueil</a>";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
 

$message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer et remplir le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";


if (!isset($_POST['envoi']))
{

	echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{

	function Rec($text)
	{
		$text = htmlspecialchars(trim($text), ENT_QUOTES);
		if (1 === get_magic_quotes_gpc())
		{
			$text = stripslashes($text);
		}
 
		$text = nl2br($text);
		return $text;
	};

	function IsEmail($email)
	{
		$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
		return (($value === 0) || ($value === false)) ? false : true;
	}
 
	$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
	$mail   = (isset($_POST['mail']))   ? Rec($_POST['mail'])   : '';
	$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
	$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
 

	$mail = (IsEmail($mail)) ? $mail : '';
 
	if (($nom != '') && ($mail != '') && ($objet != '') && ($message != ''))
	{

		$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'From:'.$nom.' <'.$mail.'>' . "\r\n" .
				'Reply-To:'.$mail. "\r\n" .
				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
				'Content-Disposition: inline'. "\r\n" .
				'Content-Transfer-Encoding: 7bit'." \r\n" .
				'X-Mailer:PHP/'.phpversion();
 

		if ($copie == 'oui')
		{
			$cible = $destinataire.';'.$mail;
		}
		else
		{
			$cible = $destinataire;
		};
 
		$caracteres_speciaux     = array(''', '’', '"', '<br>', '<br />', '<', '>', '&', '…',   '’', '‘');
		$caracteres_remplacement = array("'",      "'",        '"',      '',    '',       '<',    '>',    '&',     '...', '>>',      '<<'     );

		$objet = str_replace($caracteres_speciaux, $caracteres_remplacement, $objet);
 
		$message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message);

		$message = '
		<html>
			<body>
				<div align="center">
					<img src="finale.png" />
					<br />
					<u>Nom de l\'expéditeur :</u>'.$_POST['nom'].'<br />
					<u>Mail de l\'expéditeur :</u>'.$_POST['mail'].'<br />
					<br />
					'.nl2br($_POST['message']).'
					<br />
				</div>
			</body>
		</html>
		';
 
		$num_emails = 0;
		$tmp = explode(';', $cible);
		foreach($tmp as $mail_destinataire)
		{
			if (mail($mail_destinataire, $objet, $message, $headers))
				$num_emails++;
		}
 
		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
		{
			echo '<p class="test">'.$message_envoye.'</p>'."<br>"."<br>"."<br>";
			echo '<p class="test">'.$retour_accueil.'</p>';
		}
		else
		{
			echo '<p>'.$message_non_envoye.'</p>';
		};
	}
	else
	{

		echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
	};
};
?>
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonjour,

Je ne comprend pas ta question.

Si tu veux mettre quelque-chose par défaut dans l'objet du mail ... il te suffit de jouer avec ta variable $objet
$objet = "ce que tu veux !";
if (mail($mail_destinataire, $objet, $message, $headers))

0
gmatg
 
Salut,
En fait, j’aimerai prédéfinir l'objet du mail que l'utilisateur m'envoie (cet objet qui s'affiche sur ma boite mail). Puis l'objet que l'utilisateur rentre via le formulaire de contact apparaît dans la mail, au dessus de $nom, $mail, $message.
Donc moi j'ai fais sa : (dit moi si c'est correct)
		$message = '
		<html>
			<body>
				<div align="center">
					<img src="finale.png" />
					<br />
					<u>Nom de l\'expéditeur :</u>'.$_POST['nom'].'<br />
					<u>Mail de l\'expéditeur :</u>'.$_POST['mail'].'<br />
					<br />
					'.nl2br($_POST['message']).'
					<br />
				</div>
			</body>
		</html>
		';


et puis j'ai qu'a mettre :
$objet = "l'objet que je prédéfini";
?

Merci beaucoup d'avance
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Pour avoir un "objet" dans le mail que tu reçois ( le SUBJECT du mail) faut remplacer la variable $object par autre chose

$subject= "ce que tu veux !";
if (mail($mail_destinataire, $subject, $message, $headers))


Et utiliser ta variable $object ( qui provient du formulaire )
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';


Dans ta variable $message

$message = '
		<html>
			<body>
				<div align="center">
					<img src="finale.png" />
					<br />
                                        <u>Objet :</u>'.$object.'<br />
					<u>Nom de l\'expéditeur :</u>'.$nom.'<br />
					<u>Mail de l\'expéditeur :</u>'.$mail.'<br />
					<br />
					'.nl2br($_POST['message']).'
					<br />
				</div>
			</body>
		</html>
		';
0
gmatg
 
Parfait, sa à l'air de marcher (je ne peux pas voir ce que je reçois car mon localhost Xampp ne fonctionne toujours pas ...).
Et pour :
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';

Je n'ai pas besoin de le mettre car je l'avait deja mit.

Et sa :
$subject= "ce que tu veux !";

Je le met où dans le code ? Ya t-il une place recommander ?

Merci beaucoup
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 

Je n'ai pas besoin de le mettre car je l'avait deja mit.

Oui.. je sais. c'était pour te montrer, justement, que tu l'avais déjà...


Je le met où dans le code ? Ya t-il une place recommander ?

Avant l'envoi du mail.... mais sinon peut importe.
Mais en général, on place ( on regroupe ) les variables ( les constantes) au début du script.
de cette façon, si un jour tu as besoin de les modifier, tu les trouveras tout de suite sans avoir à les chercher un peu partout dans ton code.
0
gmatg > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ok je vois ... donc comme ca ?

<?php

echo'<link href="style.css" rel="stylesheet" type="text/css">';

$destinataire = '***@***';
 
$copie = 'oui';
$subject= "Demande de renseignements - Stimmo";
 
$message_envoye = "Votre message nous est bien parvenu, l'équipe vous répondera le plus vite possible !";
$retour_accueil = "Pour revenir à <a href=\"Accueil.html\">l'accueil</a>";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
 

$message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer et remplir le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";


if (!isset($_POST['envoi']))
{

 echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{


et cela, tu me conseille de le mettre où ? en début de code ? et est ce bien $message ou autre chose qu'il faut mettre ? Parce que là j'appelle la variable $message, est ce pas autre chose ?

  $message = '
  <html>
   <body>
    <div align="center">
     <u>Objet :</u>'.$_POST['objet'].'<br />
     <img src="finale.png" />
     <br />
     <u>Nom de l\'expéditeur :</u>'.$_POST['nom'].'<br />
     <u>Mail de l\'expéditeur :</u>'.$_POST['mail'].'<br />
     <br />
     '.nl2br($_POST['message']).'
     <br />
    </div>
   </body>
  </html>
  ';


Merci beaucoup
0