0

Possible Duplicate:
Send email using GMail SMTP server from PHP page

Im following a tutorial on how to register a user through an email authorization. Im having some trouble on SMTP. Im not sure why, but the script will not send the email. I dont know if its an issue with the SMTP or what. The tutorial is from 2009 so it may not be exactly compatible with the newest build of php. Does anyone see anything that is causing the issue?

 <?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: ryansinclair14@gmail.com";
            $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>
4

4 に答える 4

1

smtp メールには phpmailer を使用できます

http://code.google.com/a/apache-extras.org/p/phpmailer/wiki/UsefulTutorial

于 2012-04-16T04:33:28.483 に答える
1
<?php

    require_once "Mail.php";

    $from = "ryansinclair14@gmail.com";
    $to = "ryansinclair14@gmail.com";
    $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インストールした場所の完全なパスを含める必要がある場合があります。

于 2012-04-16T05:01:49.073 に答える
0

smtp を適切に構成する必要はありません。パスワードとユーザー名を指定する必要はありません。

次のリンクから移動できます。

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

于 2012-04-16T04:33:24.430 に答える
0

Gmailサーバーを使用している場合は、適切に認証する必要があると確信しています.

SMTP 認証を使用して PHP スクリプトから電子メールを送信する方法

于 2012-04-16T04:33:50.037 に答える