[PHP#SSMTP] Envoyer un email depuis une page PHP [RÉSOLU]

Applications, problèmes de configuration réseau
aminnairi
archer de cavalerie
Messages : 187
Inscription : lun. 10 août 2015, 13:50
Localisation : France

[PHP#SSMTP] Envoyer un email depuis une page PHP [RÉSOLU]

Message par aminnairi »

Bonjour,

J'aimerais pouvoir envoyer un mail (de mon adresse gmail, je n'ai pas de serveur mail) depuis un formulaire de test que j'ai créé. Ce dernier demande simplement un pseudonyme et un mot de passe (pour la forme), puis vérifie le tout et envoie un mail pour tester tout ça.

J'ai installé et configuré XAMPP. J'ai installé sendmail et j'ai renseigné dans mon fichier php.ini le chemin vers sendmail.

Est-ce qu'il y a une configuration supplémentaire à effectuer pour que tout marche ?

test.php :

Code : Tout sélectionner

<?php

	$pseudonymeErreur = $passeErreur = $confirmationErreur = $pseudonyme = $passe = $confirmation = "";

	$pass = false;

	function verifier_entree ( $entree )
	{
		$entree = filter_var( $entree, FILTER_SANITIZE_STRING );

		return $entree;
	}

	if ( $_SERVER["REQUEST_METHOD"] == "POST" )
	{
		$pass 			= true;
		$pseudonyme 	= verifier_entree ( $_POST["pseudonyme"] );
		$passe 			= verifier_entree ( $_POST["passe"] );
		$confirmation 	= verifier_entree ( $_POST["confirmation"] );

		if ( empty ( $pseudonyme ) ) 
		{
			$pass = false;

			$pseudonymeErreur = "Le pseudonyme est obligatoire !";
		}
		else if ( ! preg_match ( "/^[a-zA-Z0-9\-]*$/", $pseudonyme ) )
		{
			$pass = false;

			$pseudonymeErreur = "Le pseudonyme ne doit contenir que des lettres, chiffres et tirets !";
		}


		if ( empty ( $passe ) ) 
		{
			$pass = false;

			$passeErreur = "Le mot de passe est obligatoire !";
		}

		if ( $passe != $confirmation ) 
		{
			$pass = false;

			$confirmationErreur = "Les mots de passe ne correspondent pas !";

			$passe = $confirmation = "";
		}
	}

?>

<!DOCTYPE HTML>

<html lang="fr-FR">
	
	<head>
	
		<title>Formulaire d'enregistrement</title>

		<meta charset="utf-8" />

		<link rel="stylesheet" href="style.css" />
	
	</head>

	<body>

		<h1>Rejoindre la communauté</h1>

		<?php

			if ( $pass == false )
			{
				?>

					<form action="<?php htmlspecialchars ( $_SERVER["PHP_SELF"] ) ?>" method="post" accept-charset="utf-8">
						
						<fieldset>
							
							<legend>Formulaire d'inscription</legend>

							<span class="warning">Les champs marqués d'un astérisque sont obligatoires</span>

							<br />
						
							Pseudonyme :

							<br />

							<input type="text" name="pseudonyme" placeholder="Pseudonyme" value="<?php echo $pseudonyme; ?>" /> <span class="warning"> * <?php echo $pseudonymeErreur; ?></span>

							<br />

							Mot de passe : 

							<br />

							<input type="password" name="passe" placeholder="Mot de passe" value="<?php echo $passe; ?>" /> <span class="warning"> * <?php echo $passeErreur; ?></span>

							<br />

							Confirmation du mot de passe : 

							<br />

							<input type="password" name="confirmation" placeholder="Confirmation" value="<?php echo $confirmation; ?>" /> <span class="warning"> * <?php echo $confirmationErreur; ?></span>

							<br />

							<input type="submit" value="S'incrire" />

						</fieldset>

					</form>

				<?php
			}
			else
			{
				?>

				<h3>Formulaire validé</h3>

				<p>

					Félicitations, <span class="gras"><?php echo $pseudonyme; ?></span>, votre compte est bien enregistré. Bonne visite sur nos forums !

				</p>

				<br />

				<?php
			
				if ( mail("xxxx@gmail.com", "PHP Nouvelle inscription", "Un nouvel utilisateur à été enregistré !") != NULL )
				{
					echo "Email envoyé avec succès !";
				}

			}

		?>

	</body>

</html>
style.css (pour avoir un affichage cohérent) :

Code : Tout sélectionner

@import 'https://fonts.googleapis.com/css?family=Raleway';

body
{
	font-family: 'Raleway', sans-serif;
}

.warning
{
	font-weight: bolder;

	color: red;
}

.gras
{
	font-weight: bold;

	font-style: italic;
}
php.ini (raccourci) :

Code : Tout sélectionner

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=smtp.gmail.com
; http://php.net/smtp-port
smtp_port=25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = xxx@gmail.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "/usr/bin/sendmail -t -i"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header=On

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =
Merci par avance !
Dernière modification par aminnairi le ven. 22 juil. 2016, 21:46, modifié 1 fois.
Arch Linux x86_64 UEFI
7,3 Gio RAM
Intel® Core™ i5-4200U CPU @ 1.60GHz × 4
Intel® Haswell Mobile + NVIDIA GeForce 840M 2 Gio vRAM
KDE Plasma + SDDM
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP#SENDMAIL] Envoyer un email depuis une page PHP

Message par benjarobin »

Bonjour,
Une partie de la configuration que tu as modifié est pourtant bien indiqué qu'elle n'est que pour Windows...
Tu dois installer un paquet fournissant sendmail, le configurer, tester en dehors de php, et enfin tester avec php
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
papajoke
Elfe
Messages : 779
Inscription : sam. 30 août 2014, 19:54

Re: [PHP#SENDMAIL] Envoyer un email depuis une page PHP

Message par papajoke »

bonjour,
avec gmail, il faut :
1) configurer gmail pour qu'il soit ouvert vers des services externes
2) installer/configurer ssmtp
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
aminnairi
archer de cavalerie
Messages : 187
Inscription : lun. 10 août 2015, 13:50
Localisation : France

Re: [PHP#SENDMAIL] Envoyer un email depuis une page PHP

Message par aminnairi »

benjarobin a écrit :Bonjour,
Une partie de la configuration que tu as modifié est pourtant bien indiqué qu'elle n'est que pour Windows...
Tu dois installer un paquet fournissant sendmail, le configurer, tester en dehors de php, et enfin tester avec php
Merci pour ta remarque pertinente. En effet, je me suis rendu compte après-coup que la configuration que j'avais décommenté concernait Windows... Du coup j'ai bien configuré la partie Unix-only et recommenté la partie Windows-only.
papajoke a écrit :bonjour,
avec gmail, il faut :
1) configurer gmail pour qu'il soit ouvert vers des services externes
2) installer/configurer ssmtp
Merci beaucoup. J'aurais du utiliser ssmtp dès le début mais j'avais lu quelque part dans la documentation PHP qu'il était possible de le faire avec sendmail. Sauf que je n'avais pas vu que c'était carrément le serveur mail lourd avec des configurations de partout en veux-tu en voilà, et moi je n'avais besoin que de ssmtp.

Donc après nettoyage du fichier php.ini et configuration du fichier /etc/ssmtp/ssmtp.conf tout fonctionne à merveille.

Merci à vous deux vous êtes géniaux. :D
Arch Linux x86_64 UEFI
7,3 Gio RAM
Intel® Core™ i5-4200U CPU @ 1.60GHz × 4
Intel® Haswell Mobile + NVIDIA GeForce 840M 2 Gio vRAM
KDE Plasma + SDDM
Répondre