電子メールを送信
1. セキュリティを確保するために、電子メールに送信される URL を生成する必要があります (キー (キーは実行されるたびにランダムなコードを自動的に生成する必要があります)。 ) を入力し、URL をメールボックスに送信します。
2. URL を解析します。まず、ユーザー名に基づいてデータベースからキーと有効期限を見つけます。キーがない場合は、リクエストが偽造されているか期限切れであることを意味します。有効期限を確認し、すべてが確認されたら、パスワードを変更できます。データベース内のレコードを削除します。
注: ただし、データベースではなく redis を使用しました。リンクでは一意のコードのみが使用され、ユーザーの GUID は一意のコードに基づいて redis から取得され、3600 秒後に接続が失敗します。 (redis自体が処理します)。
$client = redis();
$client->setex($linkkey, 7200, $userInfo['guid']);
に開かれますサーバーの 25 ポートに接続しないと、電子メールを送信できません。
/** * 发送邮件方法 * * @param string $from 来自 * @param string $to 收件人地址 * @param string $subject 邮件标题 * @param string $body 邮件正文 */ public function postmail($from,$to,$subject = '',$body = ''){ error_reporting(E_ALL); date_default_timezone_set('Asia/Shanghai');//设定时区东八区 vendor('PHPMailer.class#phpmailer'); vendor('PHPMailer.class#smtp'); $mail = new \PHPMailer(); //new一个PHPMailer对象出来 $body = eregi_replace("[\]",'',$body); //对邮件内容进行必要的过滤 $mail->CharSet ="UTF-8"; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码 $mail->IsSMTP(); // 设定使用SMTP服务 $mail->Host = 'smtp.ym.163.com'; // SMTP 服务器// $mail->SMTPDebug = 1; // 启用SMTP调试 1 = errors 2 = messages $mail->SMTPAuth = true; // 服务器需要验证 $mail->Port = 25; // SMTP服务器的端口号 265/255 25 $mail->Username = '用户名'; // SMTP服务器用户名 $mail->Password = '密码'; // SMTP服务器密码 $mail->isHTML(true); $mail->SetFrom('邮箱地址', $from); $mail->Subject = $subject; $mail->MsgHTML($body); $address = $to; $mail->AddAddress($address, ''); // $mail->AddEmbeddedImage("Public/bee/common/images/logo3.jpg", "logoimg","logo.jpg"); //设置邮件中的图片// $mail->AddAttachment("Public/bee/common/images/logo3.jpg"); // attachment 附件 if(!$mail->Send()) { echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo "Message sent!恭喜,邮件发送成功!"; } }