IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Envoyer un mail avec PHP..


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de CactO_o's
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 98
    Par défaut Envoyer un mail avec PHP..
    Bonjour à tous, je suis en train de mettre en place un site internet et je me penche actuellement sur l'envoi de mail..

    Je mis en place le serveur moi même chez moi (derrière une Box), donc je n'ai pas de problème au niveau du bridage des hébergeurs. J'ai bien penser à la redirection des ports utiliser pour le FTP / SSH / HTTP. Mais je ne penses pas qu'il soit nécessaire pour l'envoi de mail (uniquement en sortie).

    Voici les informations principales sur le serveur :
    - Debian5
    - Nginx
    - PHP5


    Pour le code (ci dessous vu la taille), je l'ai pris de quelqu'un d'autre donc celui ci devrait fonctionner (je n'ai changer que l'adresse email $destinataire)..

    Malgré tout ça je n'arrive pas à recevoir de mail (même après 1jour d'attente)... La fonction mail() me renvoi pourtant true.

    Je ne sais vraiment pas d'où pourrais venir le problème donc je suis preneur de toutes idées de votre part..

    Merci à tous pour votre aide !


    Le code
    mail.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <h2>Contacter l administrateur</h2> 
     
    <form id="contact" method="post" action="mailTraitement.php">
    	<fieldset>
    		<legend>Vos coordonnées</legend>
    		<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>
    		<p><label for="email">Email :</label><input type="text" id="email" name="email" tabindex="2" /></p>
    	</fieldset>
     
    	<fieldset><legend>Votre message :</legend>
    		<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>
    		<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8"></textarea></p>
    	</fieldset>
     
    	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer" /></div>
    </form>
    mailTraitement.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    <?php
    	/*
    		********************************************************************************************
    		CONFIGURATION
    		********************************************************************************************
    	*/
    	// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    	$destinataire = 'monPseudo@hotmail.fr';
     
    	// copie ? (envoie une copie au visiteur)
    	$copie = false;
     
    	// Messages de confirmation du mail
    	$message_envoye = "Votre message nous est bien parvenu !";
    	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
     
    	// Messages d'erreur du formulaire
    	$message_erreur_formulaire = "Vous devez d'abord <a href='mail.php'>envoyer le formulaire</a>.";
    	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
     
    	/*
    		********************************************************************************************
    		FIN DE LA CONFIGURATION
    		********************************************************************************************
    	*/
     
    	// on teste si le formulaire a été soumis
    	if (!isset($_POST['envoi']))
    	{
    		// formulaire non envoyé
    		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
    	}
    	else
    	{
    		/*
    		 * cette fonction sert à nettoyer et enregistrer un texte
    		 */
    		function Rec($text)
    		{
    			$text = trim($text); // delete white spaces after & before text
    			if (1 === get_magic_quotes_gpc())
    			{
    				$stripslashes = create_function('$txt', 'return stripslashes($txt);');
    			}
    			else
    			{
    				$stripslashes = create_function('$txt', 'return $txt;');
    			}
     
    			// magic quotes ?
    			$text = $stripslashes($text);
    			$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
    			$text = nl2br($text);
    			return $text;
    		};
     
    		/*
    		 * Cette fonction sert à vérifier la syntaxe d'un email
    		 */
    		function IsEmail($email)
    		{
    			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
    			return (eregi($pattern,$email)) ? true : false;
    		};
     
    		// formulaire envoyé, on récupère tous les champs.
    		$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
    		$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    		$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
    		$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
     
    		// On va vérifier les variables et l'email ...
    		$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
     
    		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
    		{
    			// les 4 variables sont remplies, on génère puis envoie le mail
    			$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";
     
    			// envoyer une copie au visiteur ?
    			if ($copie)
    			{
    				$cible = $destinataire.','.$email;
    			}
    			else
    			{
    				$cible = $destinataire;
    			};
     
    			// Remplacement de certains caractères spéciaux
    			$message = str_replace("'","'",$message);
    			$message = str_replace("’","'",$message);
    			$message = str_replace("&quot;",'"',$message);
    			$message = str_replace('<br>','',$message);
    			$message = str_replace('<br />','',$message);
    			$message = str_replace("&lt;","<",$message);
    			$message = str_replace("&gt;",">",$message);
    			$message = str_replace("&amp;","&",$message);
     
    			// Envoi du mail
    			if (mail($cible, $objet, $message, $headers))
    			{
    				echo '<p>'.$message_envoye.'</p>'."\n";
    			}
    			else
    			{
    				echo '<p>'.$message_non_envoye.'</p>'."\n";
    			};
    		}
    		else
    		{
    			// une des 3 variables (ou plus) est vide ...
    			echo '<p>'.$message_formulaire_invalide.' <a href="mail.php">Retour au formulaire</a></p>'."\n";
    		};
    	}; // fin du if (!isset($_POST['envoi']))
    ?>

  2. #2
    Membre très actif Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Par défaut
    Bonjour,

    As tu fait un test simple sans post de formulaire afin de voir si le smtp est bien configurer dans ton ini ?

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail('ton_adresse@domaine.com', 'test', 'test smtp');

  3. #3
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Bonjour,

    il y a des fai qui brident la sortie smtp...

    voir peut être de ce coté là

Discussions similaires

  1. Envoyer un mail avec PHP de flash
    Par acheo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 16/06/2010, 13h29
  2. [Wamp] envoyer un mail avec PHP
    Par messahel dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 31/05/2008, 20h33
  3. [Mail] comment puis-je envoyer un mail avec php ?
    Par fraisa1985 dans le forum Langage
    Réponses: 1
    Dernier message: 05/09/2007, 13h53
  4. Réponses: 8
    Dernier message: 25/07/2006, 22h49
  5. Réponses: 1
    Dernier message: 25/07/2006, 22h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo