Отправка емейлов.
Скачиваем PHP
Mailer по ссылке:
https://github.com/PHPMailer/PHPMailer
Помещаем его в
корень сайта в папку PHPMailer.
В файл
create-account.php подключаем классы.
include('classes/Mail.php');
Mail::sendMail();
Создадим в
папке classes Mail.php
<?php
require_once('PHPMailer/PHPMailerAutoload.php');
class
Mail {
public
static function sendMail() {
$mail
= new PHPMailer();
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host
= 'smtp.gmail.com';
$mail->Port
= '465';
$mail->isHTML();
$mail->Username = 'somebody@gmail.com';
$mail->Password = 'yourpassword';
$mail->SetFrom('no-reply@shop-eco.ru');
$mail->Subject
= 'Hello world'; // заголовок
$mail->Body
= 'A test email!'; // тело письма
$mail->AddAddress('prognoz_distr@mail.ru');
// куда идет email
$mail->Send();
}
}
?>
Испытаем
отправку емейла. Зайдем на страницу:
http://newsocial.loc/create-account.php
Изменим файл
Mail.php
<?php
require_once('PHPMailer/PHPMailerAutoload.php');
class
Mail {
public static function sendMail($subject, $body,
$address) {
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = '465';
$mail->isHTML();
$mail->Username = 'somebody@gmail.com';
$mail->Password = 'yourpassword;
$mail->SetFrom('no-reply@shop-eco.ru');
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress($address);
$mail->Send();
}
}
?>
В
create-account.php
Теперь,
когда создаешь новый аккаунт, приходит
email о его создании
<?php
include('classes/DB.php');
include('classes/Mail.php');
if(isset($_POST['createaccount']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
if(!DB::query('SELECT username FROM users WHERE
username=:username', array(':username'=>$username))) {
if(strlen($username) >= 3 &&
strlen($username) <= 32) {
if(preg_match('/[a-zA-Z0-9_]+/', $username))
{
if(strlen($password) >= 6 &&
strlen($password) <= 60) {
if(filter_var($email,
FILTER_VALIDATE_EMAIL)) {
if(!DB::query('SELECT email FROM
users WHERE email=:email', array(':email'=>$email))) {
DB::query('INSERT INTO users
VALUES (:id, :username, :password, :email, \'0\', \'\')',
array(':id'=>null, ':username'=>$username,
':password'=>password_hash($password, PASSWORD_BCRYPT),
':email'=>$email));
Mail::sendMail('Welcome to
our Social Network!', 'Your account has been created!', $email);
echo "Success!";
} else {
echo 'Email in use!';
}
} else {
echo 'Invalid email!';
}
} else {
echo 'Invalid password!';
}
} else {
echo 'Invalid username!';
}
} else {
echo 'Invalid username!';
}
}
else {
echo 'User already exists!';
}
}
?>
<h1>Register</h1>
<form
action="create-account.php" method="post">
<p><input type="text"
name="username" placeholder="Username"/></p>
<p><input type="password"
name="password" placeholder="Password"/></p>
<p><input type="email"
name="email" placeholder="someone@somesite.com"/></p>
<input type="submit"
name="createaccount" value="Create Account"/>
</form>
Сделаем сброс
пароля. Идем на страницу forgot-password.php
<?php
include('./classes/DB.php');
include('./classes/Mail.php');
if(isset($_POST['resetpassword'])) {
// Генерируем токен.
$cstrong = true;
$token = bin2hex(openssl_random_pseudo_bytes(64, $cstrong)); // мы
генерируем 64 байта, вторым параметром
передается только перемена
$email = $_POST['email'];
$user_id = DB::query('SELECT id FROM users WHERE email=:email',
array(':email'=>$email))[0]['id'];
//DB::query('INSERT INTO password_tokens VALUES (\'\', :token,
:user_id)', array(':token'=>sha1($token), ':user_id'=>$user_id));
// Вставка в таблицу password_tokens
сгенерированного токена и id пользователя
DB::query('INSERT INTO password_tokens VALUE (:id, :token,
:user_id)', array(':id'=>null, ':token'=>sha1($token),
':user_id'=>$user_id));
Mail::sendMail('Forgot Password!', "<a
href='http://newsocial.loc/change-password.php?token=$token'>http://newsocial.loc/change-password.php?token=$token</a>",
$email);
echo 'Email sent!';
echo '<br />';
// echo $token;
}
?>
<h1>Forgot
Password</h1>
<form
action="forgot-password.php" method="post">
<input type="text" name="email" value=""
placeholder="Email..."/>
<input type="submit" name="resetpassword"
value="Reset Password"/>
</form>
Комментариев нет:
Отправить комментарий