2015-10-25 1 views
0

J'essaie d'envoyer un e-mail à partir d'un serveur xampp avec un code PHP inférieur. Le code PHP semble fonctionner correctement car il donne tous les messages de réussite et d'erreur, mais je ne reçois aucun courrier électronique sur le formulaire que je fournis.Envoi d'e-mails depuis la fonction locale sever by mail()

<?php 
if(isset($_POST['submit'])){ 
$email = $_POST['email']; 
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {// Validate email address 
    $message = "Invalid email address please type a valid email!"; 
} 
else 
{ 
    $query = $con->prepare("SELECT username FROM members where email=:email"); 
    $query->execute(array(':email'=>$email)); 
    $row = $query->fetch(PDO::FETCH_ASSOC); 

    if($query->rowCount() == 1) { 
     $encrypt = md5(1290*3+$row['username']); 
     $message = "Your password reset link has been send to your e-mail address. Check your mail and click on the link therein."; 
     $to=$email; 
     $subject="Password Recovery"; 
     $from = 'mydemo.com'; 
     $body='Hi, <br/> <br/>Your username is '.$row['username'].' <br><br>Click here to reset your password http://localhost/mydemo/reset.php?encrypt='.$encrypt.' <br/> <br/>--<br>'; 
     $headers = "From: " . strip_tags($from) . "\r\n"; 
     $headers .= "Reply-To: ". strip_tags($from) . "\r\n"; 
     $headers .= "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

     mail($to,$subject,$body,$headers); 

    } 
    else 
    { 
     $message = "Account not found please enter email you provided during sign up!"; 
    } 
    } 
    } 

<form action="" method="POST"> 
<legend>Forgot your password!</legend> 
<input type="email" name="email" id="email" required="required" maxlength="35" placeholder="Enter your email here..."/> 
<input type="submit" name="submit" id="submit" value="Submit"/> 
</form> 
<div id="message"><?php echo $message; ?></div> 

J'ai également fait suite aux changements C:\xampp\php\php.ini et c:\xampp\sendmail\sendmail.ini en fait j'eu deux développement php.ini et la production. J'ai fait des changements à php-ini-development

SMTP=smtp.gmail.com 
smtp_port=587 
sendmail_from = [email protected] 
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 

[sendmail] 

smtp_server=smtp.gmail.com 
smtp_port=587 
error_logfile=error.log 
debug_logfile=debug.log 
[email protected] 
auth_password=gmailpassword 
[email protected] 
+0

Avez-vous vérifié dans votre e-mail si c'est dans le dossier spam? (les courriels envoyés par la fonction php 'mail()' sont souvent marqués comme spam - si vous voulez éviter cela, consultez SendGrid ou Mailgun) – Howl

+0

jetez un coup d'œil à cet article http://php.codeindepth.com/php- envoi de mail/ – Cody

Répondre

0

Vous ne savez pas si cela fonctionne bien parce que vous ne cochez pas la suite du courrier de fonction(). Ajouter un si

if (false === mail($to,$subject,$body,$headers)) { 
    $message = "Mail was not sent"; 
} 

De Manuel:

Retourne TRUE si le courrier a été avec succès accepté pour la livraison, sinon FALSE.

Il est important de noter que le fait que le courrier ait été accepté pour livraison ne signifie PAS que le courrier atteindra réellement la destination prévue.

1
if (!mail($to,$subject,$body,$headers)) { 
    /*Here you can log error*/ 
    print_r(error_get_last()); 
}