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

Fermé
gmatg - 15 juin 2020 à 19:29
 gmatg - 16 juin 2020 à 11:17
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 38416 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 12 février 2025 4 734
15 juin 2020 à 19:52
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
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 38416 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 12 février 2025 4 734
16 juin 2020 à 09:52
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
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 38416 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 12 février 2025 4 734
16 juin 2020 à 11:07

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 38416 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 12 février 2025
Modifié le 16 juin 2020 à 11:20
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