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 :

Erreur d'envoi d'email


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut Erreur d'envoi d'email
    Bonjour,

    Je suis en train de suivre le tuto suivant :
    "Envoyer un mail en PHP par Adrien Pellegrini et Josselin Willette"

    Je suis sur Tango Studio qui tourne sur un UBUNTU10.04 LTS, et je travaille en local sur mon ordi. Je ne met rien encore sur internet.

    J'essaie de faire un formulaire qui envoie les champs par email.

    J'ai suivi le tuto et j'ai arrangé un peu le dernier code du tuto "à ma sauce" (je suis en "localhost/public")

    Mon problème est que lorsque j'envoie le mail j'ai l'erreur "erreur d'envoi de l'email" qui se trouve à la ligne 89 de mon code (voir code en entier).
    Il est issu d'une fonction If qui dépend de valeus que j'ai pourtant insérées dans les cases de mon formulaire avant de cliquer sur le bouton "envoyer"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (mail($to, $sujet, $msg, $headers))
    {
    	$alert = 'E-mail envoyé avec succès';
    	/* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
    	* renvoyer un mail en rafraichissant la page */
    	setcookie("sent", "1", time() + 120);
    	/* On détruit la variable $_POST */
    	unset($_POST);
    }
    else
    {
    	$alert = 'Erreur d\'envoi de l\'e-mail';
    }
    Alors j'ai l'impression qu'il y a un problème de config peut-être. Pourtant, dans le tuto il est inscrit de regarder le fichier php.ini pour vérifier le SMTP et le smtp_port qui chez moi sont respectivement "localhost/public/" et "25" (c'est moi qui ai choisi ces valeurs mais j'ai essayé avec juste "localhost" et ca marche pas non plus).

    Et voici mon code en entier :

    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
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    <?php
    /* Si le formulaire est envoyé alors on fait les traitements */
    if (isset($_POST['envoye']))
    {
    	/* Récupération des valeurs des champs du formulaire */
    	if (get_magic_quotes_gpc())
    	{
    		$civilite 		= stripslashes(trim($_POST['civilite']));
    		$nom		= stripslashes(trim($_POST['nom']));
    		$expediteur 	= stripslashes(trim($_POST['email']));
    		$sujet 		= stripslashes(trim($_POST['sujet']));
    		$message 	= stripslashes(trim($_POST['message']));
    	}
    	else
    	{
    		$civilite 		= trim($_POST['civilite']);
    		$nom		= trim($_POST['nom']);
    		$expediteur 	= trim($_POST['email']);
    		$sujet		= trim($_POST['sujet']);
    		$message 	= trim($_POST['message']);
    	}
     
    	/* Expression régulière permettant de vérifier si le
    	* format d'une adresse e-mail est correct */
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
     
    	/* Expression régulière permettant de vérifier qu'aucun
    	* en-tête n'est inséré dans nos champs */
    	$regex_head = '/[\n\r]/';
     
    	/* Si le formulaire n'est pas posté de notre site on renvoie
    	* vers la page d'accueil */
    	if($_SERVER['HTTP_REFERER'] != 'http://localhost/public/Formulaire.php')
    	{
    		header('Location: http://localhost/public/');
    	}
    	/* On vérifie que tous les champs sont remplis */
    	elseif (empty($civilite)
    		|| empty($nom)
    		|| empty($expediteur)
    		|| empty($sujet)
    		|| empty($message))
    	{
    		$alert = 'Tous les champs doivent être renseignés';
    	}
    	/* On vérifie que le format de l'e-mail est correct */
    	elseif (!preg_match($regex_mail, $expediteur))
    	{
    		$alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    	}
    	/* On vérifie qu'il n'y a aucun header dans les champs */
    	elseif (preg_match($regex_head, $expediteur)
    		|| preg_match($regex_head, $nom)
    		|| preg_match($regex_head, $sujet))
    	{
    		$alert = 'En-têtes interdites dans les champs du formulaire';
    	}
    	/* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    	elseif (!isset($_COOKIE['sent']))
    	{
    		/* Destinataire (votre adresse e-mail) */
    		$to = 'monvraimail@levraimail.com';
     
    		/* Construction du message */
    		$msg = 'Bonjour,'."\r\n\r\n";
    		$msg .= 'Ce mail a été envoyé depuis monsite.com par '.$civilite.' '.$nom."\r\n\r\n";
    		$msg .= 'Voici le message qui vous est adressé :'."\r\n";
    		$msg .= '***************************'."\r\n";
    		$msg .= $message."\r\n";
    		$msg .= '***************************'."\r\n";
     
    		/* En-têtes de l'e-mail */
    		$headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
     
    		/* Envoi de l'e-mail */
    		if (mail($to, $sujet, $msg, $headers))
    		{
    			$alert = 'E-mail envoyé avec succès';
     
    			/* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
    			* renvoyer un mail en rafraichissant la page */
    			setcookie("sent", "1", time() + 120);
     
    			/* On détruit la variable $_POST */
    			unset($_POST);
    		}
    		else
    		{
    			$alert = 'Erreur d\'envoi de l\'e-mail';
    		}
    	}
    	/* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    	else
    	{
    		unset($_POST);
    	}
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="fr">
    <head>
    	<title>Contactez moi</title>
    	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
    </head>
    <body>
     
    <?php
    if (!empty($alert))
    {
    	echo '<p style="color:red">'.$alert.'</p>';
    }
    ?>
     
    <form action="Formulaire.php" method="post">
    	<p>
    		<label for="civilite">Civilité :</label>
    		<select id="civilite" name="civilite">
    			<option
    				value="mr"
    				<?php
    					if (!isset($_POST['civilite']) || $_POST['civilite'] == 'mr')
    					{
    						echo ' selected="selected"';
    					}
    				?>
    			>
    				Monsieur
    			</option>
    			<option
    				value="mme"
    				<?php
    					if (isset($_POST['civilite']) && $_POST['civilite'] == 'mme')
    					{
    						echo ' selected="selected"';
    					}
    				?>
    			>
    				Madame
    			</option>
    			<option
    				value="mlle"
    				<?php
    					if (isset($_POST['civilite']) && $_POST['civilite'] == 'mlle')
    					{
    						echo ' selected="selected"';
    					}
    				?>
    			>
    				Mademoiselle
    			</option>
    		</select>
    	</p>
    	<p>
    		<label for="nom">Nom/Prénom :</label>
    		<input type="text" id="nom" name="nom"
    		value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>"
    		/>
    	</p>
    	<p>
    		<label for="email">E-mail :</label>
    		<input type="text" id="email" name="email"
    		value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>"
    		/>
    	</p>
    	<p>
    		<label for="sujet">Sujet :</label>
    		<input type="text" id="sujet" name="sujet"
    		value="<?php echo (isset($_POST['sujet'])) ? $sujet : '' ?>"
    		/>
    	</p>
    	<p>
    		<label for="message">Message :</label>
    		<textarea id="message" name="message" cols="40" rows="4">
    	<?php echo (isset($_POST['message'])) ? $message : '' ?>
    		</textarea>
    	</p>
    	<p>
    		<input type="submit" name="envoye" value="Envoyer" />
    	</p>
    </form>
    </body>
    </html>
    et voici un passage de mon fichier php.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = localhost/public/
    ; http://php.net/smtp-port
    smtp_port = 25
     
    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = me@example.com
     
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    comme SMTP, renseigne celui de ton fournisseur d'accès internet.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut fournisseur d'accés
    Ah bon !?! Même en local sur ma machine !

    Merci ! J'essaierai ce soir chez moi !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Disons que ce sera peut être plus simple que de configurer le serveur SMTP qui existe peut être sur ta machine.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut SMTP
    Bonjour,

    J'ai regardé les réglages offerts par la freebox :

    J'ai vu un "blocage smtp sortant" qui était actif et je l'ai rendu "inactif". J'aurais pas du ! J'ai perdu la connexon internet et tout un bordel pour remettre les paramètres en état !

    Maintenant, je vois qu'il est possible de personaliser mon reverse DNS. Apparament c'est utilisé pour une utilisation avancée de sa connexion mais après l'histoire du SMTP j'ose plus trop toucher ....

    Je ne trouve pas où je peux renseigner le SMTP.


  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    dans ton php.ini

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut SMTP
    Bonjour Sabotage !

    Je ne vous suis pas trop là.
    J'avais expliqué dans mon premier mail que j'ai vérifié mon php.ini avec les réglages suivants ;
    SMTP : localhost/public
    SMTP_port : 25
    et vous m'avez dit de renseigner le SMTP de mon fournisseur d'accés en me disant que ce sera peut être plus simple que de configurer le serveur SMTP qui existe peut être sur ta machine (il y a LAMP sur ma machine).
    Mon fournisseur d'accès internet est free donc j'ai cherché dans la config de free mais je trouve rien.
    Voilà que maintenant vous me dites que je peux renseigner le smtp de mon fournisseur d'accès dans le php.ini.

    C'est un peu déroutant pour moi

    ->J'en conclus que je peux changer les paramètres SMTP de mon fournisseur d'accès (ou de ma freebox ???) par le fichier php.ini !?!

    J'ai revu ce fichier et je ne vois pas d'autres endroits que le code ci-dessous (issu de php.ini), pour insérer les paramètres SMTP.
    Donc je fait des essais :
    Avec "smtp.free.fr" comme smtp, ca marche pas non plus.
    Pour le SMTP-port, c'est peut-être pas 25 !?! Mais comment le savoir ? Et comment être certain que c'est bien 25 ?

    Pouvez-vous me préciser si c'est bien de cette partie du code ci-dessous (issu de php.ini) à laquelle vous faisiez allusion en me conseillant de renseigner le smtp de mon fournisseur d'accès depuis le php.ini s'il vous plaît ?

    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
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = localhost/public/
    ; http://php.net/smtp-port
    smtp_port = 25
     
    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = me@example.com
     
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =
     
    ; 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 !!!

  8. #8
    Invité
    Invité(e)
    Par défaut
    Tiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ini_set("SMTP", "smtp.sfr.fr"); 
    ini_set("smtp_port", 25);
     
    mail("Ton adresse e-mail","-","-");
    Sa marche bien chez moi (change par le smtp de ton fai)

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut SMTP
    Merci !

    Il faut mettre ca dans le php.ini j'imagine ??

    Milles mercis

  10. #10
    Invité
    Invité(e)
    Par défaut
    Non il tu as tous la , tu met sa dans ton script et tu remplace dans la fonction mail par ton adresse e-mail , le sujet etc.

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut SMTP free
    Bonjour,

    Je suis désolé Yohann2008 mais cela ne fonctionne pas !

    Voici le code après où j'ai ajouté ce que tu m'as dit.
    Peut-être ne l'ais-je pas mis au bon endroit !?!

    Bon là j'en ai un peu marre ... je ne comprends pas bien ce tuto (trop dur pour mon niveau ?) Pourtant ca marche bien pour lui -> http://www.developpez.net/forums/d13...e/envoi-mails/

    Faudra dire aux modérateurs de Développez qu'il fassent un bouton "laisse tomber" à coté de "résolu" !!


    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
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    <?php
    /* Si le formulaire est envoyé alors on fait les traitements */
    if (isset($_POST['envoye']))
    {
    	/* Récupération des valeurs des champs du formulaire */
    	if (get_magic_quotes_gpc())
    	{
    		$civilite 		= stripslashes(trim($_POST['civilite']));
    		$nom		= stripslashes(trim($_POST['nom']));
    		$expediteur 	= stripslashes(trim($_POST['email']));
    		$sujet 		= stripslashes(trim($_POST['sujet']));
    		$message 	= stripslashes(trim($_POST['message']));
    	}
    	else
    	{
    		$civilite 		= trim($_POST['civilite']);
    		$nom		= trim($_POST['nom']);
    		$expediteur 	= trim($_POST['email']);
    		$sujet		= trim($_POST['sujet']);
    		$message 	= trim($_POST['message']);
    	}
     
    	/* Expression régulière permettant de vérifier si le
    	* format d'une adresse e-mail est correct */
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
     
    	/* Expression régulière permettant de vérifier qu'aucun
    	* en-tête n'est inséré dans nos champs */
    	$regex_head = '/[\n\r]/';
     
    	/* Si le formulaire n'est pas posté de notre site on renvoie
    	* vers la page d'accueil */
    	if($_SERVER['HTTP_REFERER'] != 'http://localhost/public/Formulaire.php')
    	{
    		header('Location: http://localhost/public/');
    	}
    	/* On vérifie que tous les champs sont remplis */
    	elseif (empty($civilite)
    		|| empty($nom)
    		|| empty($expediteur)
    		|| empty($sujet)
    		|| empty($message))
    	{
    		$alert = 'Tous les champs doivent être renseignés';
    	}
    	/* On vérifie que le format de l'e-mail est correct */
    	elseif (!preg_match($regex_mail, $expediteur))
    	{
    		$alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    	}
    	/* On vérifie qu'il n'y a aucun header dans les champs */
    	elseif (preg_match($regex_head, $expediteur)
    		|| preg_match($regex_head, $nom)
    		|| preg_match($regex_head, $sujet))
    	{
    		$alert = 'En-têtes interdites dans les champs du formulaire';
    	}
    	/* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    	elseif (!isset($_COOKIE['sent']))
    	{
    		/* Destinataire (votre adresse e-mail) */
    		$to = 'franck'.'.calestroupat@gmail.com';
     
    		/* Construction du message */
    		$msg = 'Bonjour,'."\r\n\r\n";
    		$msg .= 'Ce mail a été envoyé depuis monsite.com par '.$civilite.' '.$nom."\r\n\r\n";
    		$msg .= 'Voici le message qui vous est adressé :'."\r\n";
    		$msg .= '***************************'."\r\n";
    		$msg .= $message."\r\n";
    		$msg .= '***************************'."\r\n";
     
    		/* En-têtes de l'e-mail */
    		$headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
     
    		/* Envoi de l'e-mail */
    		ini_set("SMTP", "smtp.free.fr"); 
    		ini_set("smtp_port", 25);
    		if (mail($to, $sujet, $msg, $headers))
    		{
    			$alert = 'E-mail envoyé avec succès';
     
    			/* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
    			* renvoyer un mail en rafraichissant la page */
    			setcookie("sent", "1", time() + 120);
     
    			/* On détruit la variable $_POST */
    			unset($_POST);
    		}
    		else
    		{
    			echo 'Sujet : _'. $sujet.'_ message :_'. $message.'_ email : _'.$to.'_ header : _'.$headers;
    			$alert = 'Erreur d\'envoi de l\'e-mail';
    			mail("**********@gmail.com",$sujet,$message,"-");
    		}
    	}
    	/* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    	else
    	{
    		unset($_POST);
    	}
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="fr">
    <head>
    	<title>Contactez moi</title>
    	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
    </head>
    <body>
     
    <?php
    if (!empty($alert))
    {
    	echo '<p style="color:red">'.$alert.'</p>';
    }
    ?>
     
    <form action="Formulaire.php" method="post">
    	<p>
    		<label for="civilite">Civilité :</label>
    		<select id="civilite" name="civilite">
    			<option
    				value="mr"
    				<?php
    					if (!isset($_POST['civilite']) || $_POST['civilite'] == 'mr')
    					{
    						echo ' selected="selected"';
    					}
    				?>
    			>
    				Monsieur
    			</option>
    			<option
    				value="mme"
    				<?php
    					if (isset($_POST['civilite']) && $_POST['civilite'] == 'mme')
    					{
    						echo ' selected="selected"';
    					}
    				?>
    			>
    				Madame
    			</option>
    			<option
    				value="mlle"
    				<?php
    					if (isset($_POST['civilite']) && $_POST['civilite'] == 'mlle')
    					{
    						echo ' selected="selected"';
    					}
    				?>
    			>
    				Mademoiselle
    			</option>
    		</select>
    	</p>
    	<p>
    		<label for="nom">Nom/Prénom :</label>
    		<input type="text" id="nom" name="nom"
    		value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>"
    		/>
    	</p>
    	<p>
    		<label for="email">E-mail :</label>
    		<input type="text" id="email" name="email"
    		value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>"
    		/>
    	</p>
    	<p>
    		<label for="sujet">Sujet :</label>
    		<input type="text" id="sujet" name="sujet"
    		value="<?php echo (isset($_POST['sujet'])) ? $sujet : '' ?>"
    		/>
    	</p>
    	<p>
    		<label for="message">Message :</label>
    		<textarea id="message" name="message" cols="40" rows="4">
    	<?php echo (isset($_POST['message'])) ? $message : '' ?>
    		</textarea>
    	</p>
    	<p>
    		<input type="submit" name="envoye" value="Envoyer" />
    	</p>
    </form>
    </body>
    </html>

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut Fonction mail()
    Bonjour,

    Je viens de tomber sur des trucs intéressants :

    1. Sur UBUNTU : Il faut avoir installé postfix pour pouvoir envoyer des mail car LAMP apparamment ne fait pas office de serveur mail.
    2. Dans le fichier php.ini : Il faut écrire cette ligne :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      sendmail_path =/usr/sbin/sendmail -t -i


    Voilà,

    A présent mon code php présenté plus haut m'informe que les mails sont bien envoyés mais je ne reçoit rien ... un autre problème donc !
    Quelqu'un aurait une idée s'il vous plaît ???

  13. #13
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    Je te conseillerais d'aller voir les logs dans
    /var/log/maillog
    , en fait je ne suis pas trop sûr du fichier mais si ton script t'informe que le mail est bien envoyé il devrait au moins y avoir une trace de refus dans les logs .

    Sinon à titre d'information il est normal qu'une plateforme de type Lamp ne contienne pas de serveur mail intégré puisqu'elle n'est pas faites pour cela . Très explicitement c'est juste un serveur Apache, un serveur Mysql et le moteur Php pour un système Linux . Par contre php peut se connecter sur des serveurs de mails distant pour envoyer des mails, d'où l'idée de renseigner les informations smtp du serveur de ton fournisseur comme dit ci-dessus .

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut mail.log
    Bonjour !

    Je viens d'effectuer la commande gedit /var/log/mail.log
    pour voir ce qu'il y a dans ce fichier. Bien, j'ai exécité cette commande après avoir fait tourner le php qui m'a dit "mail envoyé avec succès".
    En voici le résultat (j'ai caché mon @ mail) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Mar  7 21:02:43 localhost postfix/pickup[1537]: B3CB04A1F25: uid=33 from=<www-data>
    Mar  7 21:02:43 localhost postfix/cleanup[1900]: B3CB04A1F25: message-id=<20130307200243.B3CB04A1F25@localhost>
    Mar  7 21:02:43 localhost postfix/qmgr[1538]: B3CB04A1F25: from=<www-data@gmail.com>, size=535, nrcpt=1 (queue active)
    Mar  7 21:02:44 localhost postfix/local[1903]: B3CB04A1F25: to=<xxxxxxx@gmail.com>, relay=local, delay=0.44, delays=0.31/0.02/0/0.1, dsn=5.1.1, status=bounced (unknown user: "XXXXX")
    Mar  7 21:02:44 localhost postfix/cleanup[1900]: 121014A1F5E: message-id=<20130307200244.121014A1F5E@localhost>
    Mar  7 21:02:44 localhost postfix/qmgr[1538]: 121014A1F5E: from=<>, size=2240, nrcpt=1 (queue active)
    Mar  7 21:02:44 localhost postfix/bounce[1904]: B3CB04A1F25: sender non-delivery notification: 121014A1F5E
    Mar  7 21:02:44 localhost postfix/qmgr[1538]: B3CB04A1F25: removed
    Mar  7 21:02:44 localhost postfix/local[1903]: 121014A1F5E: to=<www-data@gmail.com>, relay=local, delay=0.16, delays=0.09/0/0/0.07, dsn=2.0.0, status=sent (delivered to mailbox)
    Mar  7 21:02:44 localhost postfix/qmgr[1538]: 121014A1F5E: removed
    Pour moi c'est du chinois pour l'instant ! Je vais essayer de me renseigner sur ce que signifie ce chat rabia
    Mais si quelqu'un a une petite idée

    Merci !

  15. #15
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    J'en ai mangé pas mal de la configuration de serveur mail mais peut importe c'est toujours aussi lourd :/.

    Bon donc à priori le serveur mail distant vient de te répondre que la boite mail ciblé n'existait pas et il a ensuite envoyé le mail vers "www-data@gmail.com" chose que je ne comprend pas trop. A priori il essaye de l'envoyé depuis cette adresse aussi, bizarre.

    Je vais essayer de voir de mon côté à cela pourrais être due mais je pense que quelqu'un s'y connaissant plus dans le domaine sera plus utile, désolé.
    Je te dis si j'ai des nouvelles .

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut www-data
    Bonsoir Terra !

    Merci beaucoup pour ton aide précieuse !

    Tu m'a bien fait évoluer avec tes deux interventions ! et je comprends mieux ce mail.log.

    Saurais-tu me dire où tu as appris ces choses ???? quel site ou quel livre ? je n'ai pas trouvé d'explications du mail.log.


  17. #17
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut mail.log
    Bonsoir,

    Effectivement, on voit dans la première ligne du fichier mail.log ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mar  7 21:02:43 localhost postfix/pickup[1537]: B3CB04A1F25: uid=33 from=<www-data>
    J'ai pensé que le code php ne renvoyait pas le bon from. Donc j'ai inséré une ligne dans le code php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'from : '.$expediteur;
    juste après le signalement que le mail a été envoyé. Et en fait l'echo me renvoie bien l'adresse mail inscrite dans le champs mail.

    Donc le "from" du fichier mail.log ne vient pas du code php....


  18. #18
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Oulaaa alors la lecture du log c'est plus avec les tests et les forums. L'expérience et les docs : il n'y a que ça de vrai quand il s'agit de la technique.

    Après tu sais je ne suis guère très doué dans le domaines d'envois des mails xD mais on va dire que je me débrouille . Si une personne qui s'y connait bien vient sur le post il devrait te trouver la solution en deux secondes xD en attendant voyons voir.

    Il n'y a rien d'autre avant les lignes que tu as mis dans ton post précédent ?

  19. #19
    Invité
    Invité(e)
    Par défaut
    Essaye aussi en rajoutant init_set("sendmail_from","ton e-mail");.
    Je crois que c'est sa car moi j'avais rajouter le sendmail_from directement dans mon php.ini et je n'y est pas penser en postant.
    Dernière modification par FirePrawn ; 08/03/2013 à 14h48. Motif: Mise en forme

  20. #20
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut init_set
    Bonjour,

    Pour rajouter cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    init_set("sendmail_from","ton e-mail");
    Je peux la mettre n'importe où dans le fichier php.ini ?

    Merci,

Discussions similaires

  1. erreur d'envois d'email
    Par DripKi_13 dans le forum Langage
    Réponses: 9
    Dernier message: 09/12/2014, 11h11
  2. erreur d'envoi d'email
    Par schranz dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/2010, 09h35
  3. [WD12] Erreur lors d'envoi d'email
    Par bruce207 dans le forum WinDev
    Réponses: 9
    Dernier message: 03/03/2010, 15h49
  4. message d'erreur sur l'envoi dun email par smtp
    Par l_achraf dans le forum VB.NET
    Réponses: 7
    Dernier message: 20/03/2009, 19h37
  5. [Mail] Erreur 553 en envoi d'email
    Par Christophe Charron dans le forum Langage
    Réponses: 1
    Dernier message: 23/11/2006, 18h38

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