在本地主机上的 Codeigniter 中实现忘记密码
Implementing forgot password in Codeigniter on localhost
我正在尝试在 codeigniter 中实现忘记密码功能,但我遇到了这样的问题,请帮助我解决这个问题。此外,当我将协议更改为邮件时,它又给我一个错误,
Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.
完整错误如下
A PHP Error was encountered
Severity: Warning
Message: fsockopen(): unable to connect to ssl://smtp.gmail.com:25 (Connection timed out)
Filename: libraries/Email.php
Line Number: 2069
The following SMTP error was encountered: 110 Connection timed out
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.
Date: Thu, 14 Feb 2019 10:52:06 +0100
From: "arazu" <arazugajera98@gmail.com>
Return-Path: <arazugajera98@gmail.com>
To: arazugajera98@gmail.com
Subject: =?UTF-8?Q?Reset=20your=20passwrod?=
Reply-To: <arazugajera98@gmail.com>
User-Agent: CodeIgniter
X-Sender: arazugajera98@gmail.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <5c653a46009bc@gmail.com>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="B_ALT_5c653a46009c6"
This is a multi-part message in MIME format.
Your email application may not support this format.
--B_ALT_5c653a46009c6
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Click Here if you want to reset your password
--B_ALT_5c653a46009c6
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
=3Ca href=3D'http://127.0.0.1/CodeIgniter/login/reset=5Fpassword/a5ea8860b0=
5acc175d4c1847fab1f2ee'=3EClick Here=3C/a=3E if you want to reset your pass=
word
--B_ALT_5c653a46009c6--
我的forgot_password()代码部分如下。
public function forgot_password(){
$this->load->library('form_validation');
$this->form_validation->set_rules('email','email','trim|required|valid_email');
if($this->form_validation->run() == FALSE){
echo "please enter email";
$this->load->view('recover_password');
}
else{
$email = $this->input->post('email');
$result = $this->registration_model->email_exists($email);
if($result == TRUE){
$temp_pass=md5(uniqid());
$email_config = array(
'smtp_host'=>'localhost',
'smtp_user'=>'arazugajera98@gmail.com',
'smtp_pass'=>'*******',
'smtp_port'=>25,
'charset' => 'utf-8',
'protocol'=>'smtp',
'mailtype'=>'html'
);
$this->load->library('email');
$this->email->initialize($email_config);
$this->email->set_newline('\r\n');
$this->email->from('arazugajera98@gmail.com','arazu');
$this->email->to($this->input->post('email'));
$this->email->subject('Reset your passwrod');
$message = "this email is sent you to reset your password";
$message = "<a href='".base_url()."login/reset_password/$temp_pass'>Click Here</a> if you want to reset your password";
$this->email->message($message);
$this->email->set_newline("\r\n");
if($this->email->send()){
echo "hello"; exit();
if($this->registration_model->temp_reset_password($temp_pass)){
echo 'check your for instruction, thank you';
}
}
else{
//echo "email is not sent, please contact your administrator";
echo $this->email->print_debugger();
}
}else{
echo "your email is not exists into database";
}
}
}
如何在本地主机上的 Codeigniter 中发送电子邮件?
@Arazu Gajera
当它是实时服务器时可以发送电子邮件。
但是如果你想在本地主机上设置电子邮件工作设施,那么你必须设置 SMTP 配置,如下所示。
注意:- 这只是 SMTP 配置的基本设置。不同的电子邮件库可能有不同的语法。
//Load email Library
$this->load->library('email');
$email_config ['charset'] = 'utf-8';
$email_config ['mailtype'] = 'html';
$email_config ['newline'] = "\r\n";
if($_SERVER['HTTP_HOST']=="localhost")
{
//SMTP configuration
$email_config = array(
'smtp_host'=>'ssl://smtp.gmail.com';
'smtp_user'=>'arazugajera98@gmail.com',
'smtp_pass'=>'*******',
'smtp_port'=>465;
'protocol' =>'smtp',
);
}
因此,$email_config ['charset'] = 'utf-8';
、$email_config ['mailtype'] = 'html';
、$email_config ['newline'] = "\r\n";
是在本地主机和 Live-server 中使用的常见电子邮件配置变量。
当它是本地主机时,电子邮件功能将使用 //SMTP 配置 $email_config
数组。
注意:- 请记住,当您的网站运行时 LIVE Server,建议从您使用过的所有文件中删除此if($_SERVER['HTTP_HOST']=="localhost")
电子邮件条件。
编辑:-(重要)
请更改以下行
//$this->email->set_newline('\r\n');
$this->email->set_newline("\r\n"); //Use double quotes for \r\n
因为 \n 只有在双引号中才表示换行。在单引号中,它表示文字字符 \n.
请先加载电子邮件库:
$this->load->library('email');
我正在尝试在 codeigniter 中实现忘记密码功能,但我遇到了这样的问题,请帮助我解决这个问题。此外,当我将协议更改为邮件时,它又给我一个错误,
Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.
完整错误如下
A PHP Error was encountered
Severity: Warning
Message: fsockopen(): unable to connect to ssl://smtp.gmail.com:25 (Connection timed out)
Filename: libraries/Email.php
Line Number: 2069
The following SMTP error was encountered: 110 Connection timed out
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.
Date: Thu, 14 Feb 2019 10:52:06 +0100
From: "arazu" <arazugajera98@gmail.com>
Return-Path: <arazugajera98@gmail.com>
To: arazugajera98@gmail.com
Subject: =?UTF-8?Q?Reset=20your=20passwrod?=
Reply-To: <arazugajera98@gmail.com>
User-Agent: CodeIgniter
X-Sender: arazugajera98@gmail.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <5c653a46009bc@gmail.com>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="B_ALT_5c653a46009c6"
This is a multi-part message in MIME format.
Your email application may not support this format.
--B_ALT_5c653a46009c6
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Click Here if you want to reset your password
--B_ALT_5c653a46009c6
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
=3Ca href=3D'http://127.0.0.1/CodeIgniter/login/reset=5Fpassword/a5ea8860b0=
5acc175d4c1847fab1f2ee'=3EClick Here=3C/a=3E if you want to reset your pass=
word
--B_ALT_5c653a46009c6--
我的forgot_password()代码部分如下。
public function forgot_password(){
$this->load->library('form_validation');
$this->form_validation->set_rules('email','email','trim|required|valid_email');
if($this->form_validation->run() == FALSE){
echo "please enter email";
$this->load->view('recover_password');
}
else{
$email = $this->input->post('email');
$result = $this->registration_model->email_exists($email);
if($result == TRUE){
$temp_pass=md5(uniqid());
$email_config = array(
'smtp_host'=>'localhost',
'smtp_user'=>'arazugajera98@gmail.com',
'smtp_pass'=>'*******',
'smtp_port'=>25,
'charset' => 'utf-8',
'protocol'=>'smtp',
'mailtype'=>'html'
);
$this->load->library('email');
$this->email->initialize($email_config);
$this->email->set_newline('\r\n');
$this->email->from('arazugajera98@gmail.com','arazu');
$this->email->to($this->input->post('email'));
$this->email->subject('Reset your passwrod');
$message = "this email is sent you to reset your password";
$message = "<a href='".base_url()."login/reset_password/$temp_pass'>Click Here</a> if you want to reset your password";
$this->email->message($message);
$this->email->set_newline("\r\n");
if($this->email->send()){
echo "hello"; exit();
if($this->registration_model->temp_reset_password($temp_pass)){
echo 'check your for instruction, thank you';
}
}
else{
//echo "email is not sent, please contact your administrator";
echo $this->email->print_debugger();
}
}else{
echo "your email is not exists into database";
}
}
}
如何在本地主机上的 Codeigniter 中发送电子邮件?
@Arazu Gajera
当它是实时服务器时可以发送电子邮件。
但是如果你想在本地主机上设置电子邮件工作设施,那么你必须设置 SMTP 配置,如下所示。
注意:- 这只是 SMTP 配置的基本设置。不同的电子邮件库可能有不同的语法。
//Load email Library
$this->load->library('email');
$email_config ['charset'] = 'utf-8';
$email_config ['mailtype'] = 'html';
$email_config ['newline'] = "\r\n";
if($_SERVER['HTTP_HOST']=="localhost")
{
//SMTP configuration
$email_config = array(
'smtp_host'=>'ssl://smtp.gmail.com';
'smtp_user'=>'arazugajera98@gmail.com',
'smtp_pass'=>'*******',
'smtp_port'=>465;
'protocol' =>'smtp',
);
}
因此,$email_config ['charset'] = 'utf-8';
、$email_config ['mailtype'] = 'html';
、$email_config ['newline'] = "\r\n";
是在本地主机和 Live-server 中使用的常见电子邮件配置变量。
当它是本地主机时,电子邮件功能将使用 //SMTP 配置 $email_config
数组。
注意:- 请记住,当您的网站运行时 LIVE Server,建议从您使用过的所有文件中删除此if($_SERVER['HTTP_HOST']=="localhost")
电子邮件条件。
编辑:-(重要) 请更改以下行
//$this->email->set_newline('\r\n');
$this->email->set_newline("\r\n"); //Use double quotes for \r\n
因为 \n 只有在双引号中才表示换行。在单引号中,它表示文字字符 \n.
请先加载电子邮件库:
$this->load->library('email');