Envoie email via fonction php mail()

Résolu
cs_midoxe Messages postés 98 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 17 janvier 2012 - 14 sept. 2011 à 02:32
cs_midoxe Messages postés 98 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 17 janvier 2012 - 14 sept. 2011 à 12:05
bonjour, c'est la première fois que je viens sur ce forum.

voilà mon problème : j'essaye d'utiliser la fonction mail() dans une page .php en local avec WAMPserver.

ma page contenant un petit formulaire en html envoie le texte vers la page "traitement" en php, cette dernière devrait renvoyer le texte sur mon adresse mail.

mais le message d'erreur suivant s'affiche :

Warning: mail() [function.mail]: Failed to connect to mailserver at "smtp.gmail.com" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() :

Voci mon code :

<?php

if(isset($_POST['email'])) //si variable formulaire reçu
{
$email= $_POST['email'];

//vérification email

if(false == filter_var($email, FILTER_VALIDATE_EMAIL)) //if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
?>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
x=alert('Adresse email incorrecte...\351ssayez une autre');
location.href='courier_electro.php';
</SCRIPT>
</HEAD>

<?php
}
else
{
$sujet="recuperation mot de passe";
$message="vous allez trouver ici votre mot de passe";

// Declaration des entetes
//$entetes = "From: aouidi.ahmed@gamil.com" ;


ini_set("SMTP", "smtp.gmail.com");
ini_set("smtp_port", 25);//tester avec 465
ini_set("sendmail_from",$email);
$envoi_mail = mail('$email', '$sujet', '$message');



if (!$envoi_mail)
{ echo " Le mail n'a pas été envoyé car un problème est survenu...

" ;
}

else
{ echo " L'email a été envoyé avec succès !

"; }

}
}//fin if
?>


je précise que j'ai modifié le fichier php.ini comme cela :

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

merci pour vos réponses


...

2 réponses

cs_midoxe Messages postés 98 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 17 janvier 2012 1
14 sept. 2011 à 12:05
Bonjour,

C'est bon ça marche voici mon code ça peut servir à quelqu'un

<?php

if(isset($_POST['email']))
{
$recipient= $_POST['email'];

//vérification email

if(false == filter_var($recipient, FILTER_VALIDATE_EMAIL)) //if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{

echo '
<center style="color:blue"> Adresse email incorrecte...éssayez une autre </center>';
}
else
{

//connexion BDD
$conn =oci_connect('hr', 'hr');

$my_query="SELECT * from tb_user where EMAIL ='$recipient'";

$sql_query = 'SELECT COUNT(*) AS NUMBER_OF_ROWS FROM (' . $my_query . ')';

$stmt= oci_parse($conn, $sql_query);

oci_define_by_name($stmt, 'NUMBER_OF_ROWS', $number_of_rows);

oci_execute($stmt);

oci_fetch($stmt);

//echo $number_of_rows; cé très utile


if ($number_of_rows == 0 ) {

echo '
<center style="color:blue">Erreur ..!! Votre email ne correspond à aucun client</center>';

}
else
{
$truc=oci_parse($conn,"SELECT * from tb_user where EMAIL ='$recipient' ");
oci_execute($truc);
while ($dow = oci_fetch_array($truc, OCI_BOTH))
{
$nom=$dow['NOM'];
$prenom=$dow['PRENOM'];
$mdp=$dow['MDP'];
}


$Name = "Patrice François"; //senders name
$email = "p.françois@gmail.com"; //senders e-mail adress
$mail_body = 'Bonjour Mr'.' '.$nom.' '.$prenom.',
Conformément à votre demande, vous allez trouvez en dessus votre mot de passe.

Votre mot de passe est : '.$mdp.'.
'.'Cordialement,
Service Informatique XXXX' ; //mail body

$subject = "Récuperer mot de passe"; //subject
$headers ='From: Patrice Baret <'.$email.'>'."\n";
$headers .='Reply-To: a.ahmed@gmail.com'."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
//$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields

ini_set('sendmail_from', $email); //Suggested by "Some Guy"

$envoi_mail = mail($recipient, $subject, $mail_body, $headers);

if ($envoi_mail)
{ echo "
<center style='color:blue'> L'email a été envoyé avec succès ! </center>" ;
}

else
{ echo "<center> Le mail n'a pas été envoyé car un problème est survenu...</center>" ;
}
}
}
}//fin if
?>

Merci jnbrunet pour ta réponse elle était utile .

A bientot
3
jnbrunet Messages postés 258 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 13 novembre 2012
14 sept. 2011 à 03:21
Salut !

Je crois que google nécessite une authentification ?

Regarde ce lien : http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

Il utilise le package PEAR pour rendre l'envoie de courriel via SMTP beaucoup plus facile. L'exemple montre même un envoi de courriel avec une authentification.

Bonne chance !

-Jn-
0
Rejoignez-nous