2010-02-25 7 views
0

J'ai essayé de configurer un mot de passe oublié sur un site Web que je construis mais chaque fois que j'essaie de charger la page Je suis accueilli par l'erreur:Attention: mail() [function.mail]: Impossible de se connecter au serveur mail sur le port "localhost" 25

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

Comment résoudre ce problème?

ici est le code que j'ai jusqu'à présent:

<?php 

      if (array_key_exists('forgot',$_POST)) { 

     $email = $_POST['email']; 

     mysql_select_db($database_speedycms, $speedycms); 
     $query_email = "SELECT * FROM tbl_users WHERE email='$email'"; 
     $email = mysql_query($query_email, $speedycms) or die(mysql_error()); 
     $row_email = mysql_fetch_assoc($email); 
     $totalRows_user = mysql_num_rows($email); 

     mysql_query("SELECT * FROM users WHERE email='$email'"); 

     if($totalRows_user == 0) 

     { 
     echo "<span class='form2'>We're sorry, but we could not find a user with that email address.<p>Please try again.<p> 
     <a href='forgotpassword.php' class='form'>Return</a></span>"; 
     } 

     else 

     { 


     // create a random password 
     function createRandomPassword() { 
     $chars = "abcdefghijkmnopqrstuvwxyz023456789"; 
     srand((double)microtime()*1000000); 
     $i = 0; 
     $pass = '' ; 
     while ($i <= 7) { 
      $num = rand() % 33; 
      $tmp = substr($chars, $num, 1); 
      $pass = $pass . $tmp; 
      $i++; 
      } 
     return $pass; 
     } 
     $password = createRandomPassword(); 


     // generate email 

     $username = $row_email['username']; 
     $msg = "Your new login information is:\n\n"; 
     $msg .= "Username: $username\n"; 
     $msg .= "Password: $password\n"; 

     mail("$email", "Speedy CMS Login Information", "$msg", "From:[email protected]"); 

     // display message 

     echo "<span class='form2'>Thanks. Your new password has been sent to <i>".$row_email['email']."</i>.<p> 
     <a href='index.php' class='form'>Return</a></span>"; 

     } 

     exit; 

     } 

    ?> 
+0

Exécutez-vous un serveur de messagerie sur localhost? 'Telnet localhost 25'. –

+0

ouais ... je ne savais pas que vous deviez en créer un – methuselah

+0

Quel est votre FAI? – AlexV

Répondre

5

On dirait que votre serveur ne dispose pas d'une course MailServer smtp. Vous pouvez utiliser ces fonctions pour définir un serveur smtp différent:

ini_set('SMTP', "server.com"); 
ini_set('smtp_port', "25"); 
ini_set('sendmail_from', "[email protected]"); 

Bien sûr, vous devez connaître un serveur smtp actif.

Bonne chance!

+0

des idées quel serveur smtp je pourrais utiliser? – methuselah

+0

Peut-être que vous pourriez utiliser le serveur de messagerie de votre isp. Certains ne nécessitent pas de connexion. – Bas

0

Il semblerait que vous n'ayez pas de serveur SMTP en cours d'exécution sur votre système. Quel genre de serveur est-ce?

+0

J'utilise xampp pour le développement local – methuselah

+1

Ok, essayez de le faire fonctionner sur un serveur qui a également un service SMTP en cours d'exécution. Ou configurez votre PHP pour utiliser un serveur de messagerie externe. –

+0

pouvez-vous recommander des serveurs de messagerie externes gratuits? – methuselah

0

On dirait que vous utilisez une installation PHP locale (en utilisant WAMPSERVER, EasyPHP ou autre) parce que les hôtes "réels" ont rarement mal configuré leur serveur. Si c'est le cas, modifier le php.ini et utilisez vos paramètres FAI exemple:

[mail function] 
SMTP = mail.yourdomain.com 
smtp_port = 25 
+0

puis-je utiliser le serveur smtp de google mail? – methuselah

+1

Je ne suis pas sûr des règles de Google pour utiliser leur serveur SMTP. Je suis assez sûr que vous devez être authentifié pour utiliser leur serveur SMTP et je ne vois pas ce genre de paramètre dans PHP.ini ... Mais vous pouvez utiliser vos paramètres ISP avec ceci à coup sûr. – AlexV

2

Vous devez configurer ces valeurs sur php.ini fichier

SMTP = smtp.yourdomain.com 
smtp_port = 25 
username = [email protected] 
password = yourmailpassord 
sendmail_from = [email protected] 

Vous pouvez fournir des mêmes détails que dans la configuration de vue. Certains serveurs vérifient également l'adresse "sendmail_from".

Questions connexes