Fonction mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fonction mail

Re: Fonction mail

par Hypérion » 21 mars 2014, 23:55

Bonsoir,

Si votre hébergeur vous le permet d'utiliser la fonction mail, alors pas besoin d'identifiants. Il faut donc vraiment vérifier côté hébergement si vous avez le droit d'user de cette fonction, si vous avez un quota (10/1000/10000 mails par jours) ou tout autre chose susceptible de bloquer.

Vérifier également que l'e-mail destinataire est bien correct. Il peut apparaître dans les indésirables (souvent).

Vous pouvez essayer de faire :
//=====Envoi de l'e-mail.
if(!mail($mail,$sujet,$message,$header))
{
    echo 'Erreur !';
}
//==========
La fonction renvoie false si le mail n'est pas partit. Si elle ne renvoie pas d'erreur, c'est qu'il a bien été expédié.

Fonction mail

par Herodote » 19 mars 2014, 20:37

Bonjour à tous.
J'ai un problème avec la fonction mail : je ne comprend pas comment elle fonctionne et donc je n'arrive pas à l'utiliser.

J'essaye d'envoyer un mail qui envoie un nouveau mot de passe si le membre l'a oublié, mais vous l'aurez deviné, ça n'envoie aucun mail. :roll:

Voici mon code :
<div class="form_forget_pass">
<form method="post" action="./forgetmdp.php">
Votre adresse mail :
<input type="email" name="email"  />
<input type="submit" value="Envoyez moi un mail"/>
</form>
<?php


// Génération d'une chaine aléatoire
function chaine_aleatoire($nb_car, $chaine = 'azertyuiopqsdfghjklmwxcvbn123456789')
{
    $nb_lettres = strlen($chaine) - 1;
    $generation = '';
    for($i=0; $i < $nb_car; $i++)
    {
        $pos = mt_rand(0, $nb_lettres);
        $car = $chaine[$pos];
        $generation .= $car;
    }
    return $generation;

}



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

 $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:email');
    $query->bindValue(':email',$email, PDO::PARAM_STR);
    $query->execute();
    $mail_no_exist=($query->fetchColumn()==0)?1:0;
    $query->CloseCursor();
    if(!$mail_no_exist)
    {
        
		
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email)) 
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}

$message_html = "<html><head></head><body><b>Salut</b>, vous avez demandé un nouveau mot de passe</body></html>";
//==========
 
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Nouveau mot de passe";
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"Admin \"<monadressemail>".$passage_ligne;
$header.= "Reply-to: \"".$email."\" <".$email.">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 

//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
 
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
//==========
	
    }
	else
	{
	echo'Votre adresse mail n\'existe pas.';
	}


}
?>
Déjà je ne renseigne pas le mot de passe de la boite mail, j'imagine que c'est pas normal, mais je n'ai pas trouvé où le mettre.
Sinon voyez vous d'autres erreurs?

Merci d'avance à ceux qui m'aideront !