2012-04-16 2 views
0

Можно создать дубликат:
Send email using GMail SMTP server from PHP pagePHP и SMTP не работает вместе

Im после учебника о том, как зарегистрировать пользователь через авторизацию по электронной почте. У меня проблемы с SMTP. Я не уверен, почему, но сценарий не отправит электронное письмо. Я не знаю, есть ли проблема с SMTP или что. Учебное пособие с 2009 года, поэтому оно не может быть точно совместимо с новейшей сборкой php. Кто-нибудь видит что-то, что вызывает проблему?

<?php 
echo "<h1>Register</h1>"; 

$submit = filter_input(INPUT_POST, 'submit'); 
//form data 
$fullname = strip_tags (filter_input(INPUT_POST, 'fullname')); 
$username = strtolower(strip_tags (filter_input(INPUT_POST, 'username'))); 
$password = strip_tags(filter_input(INPUT_POST, 'password')); 
    $repeatpassword = strip_tags(filter_input(INPUT_POST, 'repeatpassword')); 
$date = date("Y-m-d"); 
$email = strtolower(strip_tags (filter_input(INPUT_POST, 'email'))); 

if ($submit) 
{ 
//open database 
$connect=mysql_connect("localhost","root","myrealpasswordwouldgohere"); 
mysql_select_db("phplogin"); 

$namecheck = mysql_query("SELECT username FROM users WHERE username='$username'"); 
$count = mysql_num_rows($namecheck); 

if($count!=0) 
{ 
die("Username already taken, please choose another"); 
} 

//check for existence 
if($fullname&&$username&&$password&&$repeatpassword) 
{ 
    if ($password==$repeatpassword) 
    { 
    //check char length of username and fullname 
     if (strlen($username)>25||strlen($fullname)>25) 
     { 
     echo "Length of username or full name is too long!"; 
     } 
     else 
     { 
     //check password length 
      if (strlen ($password)>25 || strlen ($password)<6) 
      { 
      echo "Password must be between 6 and 25 characters"; 
      } 
      else 
      { 
      $password = md5($password); 
      //register user  

      //generate random number 
      $random = rand(23456789,98765432); 


      $queryreg = mysql_query("INSERT INTO users VALUES ('','$fullname','$username','$password','$email','$date','$random','0')"); 
      die ("You have been registered! Check your email to activate your account to activate your account."); 

      $lastid = mysql_insert_id(); 

      //send activation email 
      $to = $email; 
      $subject = "Activate your Account"; 
      $headers = "From: [email protected]"; 
      $server = "smtp.gmail.com"; 

      ini_set("SMTP","smtp.gmail.com"); 

      $body = " 
      Hello $fullname,\n\n 
      You need to activate you account with the link below: 
      http://localhost/academy/loginsession/activate.php?id=$lastid&code=$random \n\n 

      Thanks! 
      "; 

      //function to send email 
      mail($to, $subject, $body, $headers); 
      die("You have been registered! Check your email to activate your account."); 


      } 



     } 





    } 
    else echo "Your passwords do not match"; 


} 
else echo "Please fill in <b>all</b> fields!"; 


} 


?> 
<p> 
<html> 

     <form action='register.php' method='POST'> 
<table> 
    <tr> 
     <td> 
     Your full name: 
     </td> 
     <td> 
     <input type='text' name='fullname' value='<?php echo $fullname;?>'> 
     </td> 

    </tr> 

    <tr> 
     <td> 
     choose a username: 
     </td> 
     <td> 
     <input type='text' name='username' value='<?php echo $username;?>'> 
     </td> 

    </tr> 


    <tr> 
     <td> 
     Choose a password: 
     </td> 
     <td> 
     <input type='password' name='password'> 
     </td> 

    </tr> 

    <tr> 
     <td> 
     Repeat your password: 
     </td> 
     <td> 
     <input type='password' name='repeatpassword'> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     Email: 
     </td> 
     <td> 
     <input type='text' name='email'> 
     </td> 


    </tr> 

    <table> 
    <p> 
    <input type='submit' name='submit' value='Register'> 

</form> 
+0

http://stackoverflow.com/questions/712392/send-email-using-gmail-smtp-server-from-php-page – Prix

ответ

0

Вы настроили smtp правильно. Вы предоставляете пароль и имя пользователя.

Вы можете перейти по следующей ссылке.

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

+0

Ив просматривал эту страницу, какая часть не настроена правильно? –

+0

Я добавил тех, и все еще не работает ... –

+0

какая ошибка вы получаете? – Pushparaj

0

Я уверен, что если вы используете GMAIL серверов вам необходимо пройти проверку подлинности должным образом.

Google выскочило что-то, что выглядит, как это могло бы быть полезным How to Send Email from a PHP Script Using SMTP Authentication

1
<?php 

    require_once "Mail.php"; 

    $from = "[email protected]"; 
    $to = "[email protected]"; 
    $subject = "Test"; 
    $body = "Hello World"; 

    $host = "ssl://smtp.gmail.com"; 
    $port = "465"; 
    $username = "ryansinclair14"; 
    $password = "PASSWORD"; 

    $headers = array ('From' => $from, 
     'To' => $to, 
     'Subject' => $subject); 
    $smtp = Mail::factory('smtp', 
     array ('host' => $host, 
     'port' => $port, 
     'auth' => true, 
     'username' => $username, 
     'password' => $password)); 

    $mail = $smtp->send($to, $headers, $body); 

    if (PEAR::isError($mail)) { 
     echo("<p>" . $mail->getMessage() . "</p>"); 
    } else { 
     echo("<p>Message successfully sent!</p>"); 
    } 

?> 

Попробуйте это. Может потребоваться включить полный путь для Mail.php, где бы вы его не установили.

+0

Что означает полный путь? его установлено в нормальном месте –

+0

http://pear.php.net/manual/en/installation.php – Jack

+0

Я думаю, что у меня он уже установлен –

Смежные вопросы