Php 获取错误fsockopen():使用codeigniter电子邮件类发送电子邮件时无法连接到smtp.googlemail.com:465(连接超时)

Php 获取错误fsockopen():使用codeigniter电子邮件类发送电子邮件时无法连接到smtp.googlemail.com:465(连接超时),php,codeigniter,email,Php,Codeigniter,Email,我是codeigniter的新手我尝试使用codeigniter电子邮件类发送电子邮件,但遇到错误fsockopen():无法连接到smtp.googlemail.com:465(连接超时)我尝试解决此问题,但没有成功 public function signup() { $this->form_validation->set_rules('email','Email','required|valid_email|is_unique[fbadmin.email]');

我是codeigniter的新手我尝试使用codeigniter电子邮件类发送电子邮件,但遇到错误fsockopen():无法连接到smtp.googlemail.com:465(连接超时)我尝试解决此问题,但没有成功

public function signup()
{
    $this->form_validation->set_rules('email','Email','required|valid_email|is_unique[fbadmin.email]');
    $this->form_validation->set_error_delimiters("<p class='text-danger'>","</p>");
    if( $this->form_validation->run()==TRUE )
    {
        $data= $this->input->post();
        unset($data['submit']);
        //print_r($data);exit;
        $this->load->model('Fbadminmodel');
        if($this->Fbadminmodel->signup($data))
        {
            //$this->load->library('email');
            $config = array(
                'protocol'  =>'smtp',
                'smtp_host' =>'smtp.googlemail.com',
                'smtp_port' =>'465',
                'smtp_user' =>'anujk3313@gmail.com',
                'smtp_pass' =>'password',
                'mail_type' =>'html',
                'charset'   =>'utf-8'
                );
            //$this->email->initialize($config);
            $this->load->library('email', $config);
            $this->email->from('anujk3313@gmail.com','Anuj Kumar');
            $this->email->to($data);
            $this->email->message('www.haiviral.com');
            $this->email->set_newline("\r\n");

            if($this->email->send())
            {
                //$this->session->set_flashdata('feedback','Succefully Registred. Please verify your email');
                echo "mail send";
            }
            else
            {
                show_error($this->email->print_debugger());
            }
        }
        else
        {
            $this->load->view('fbadmin');
            $this->session->set_flashdata('feedback','Registration Failed');
        }
        //$this->session->flashdata('flash','Email Sent');
        $this->load->view('fbadmin');
    }
    else
    {
        echo validation_errors();
        $this->load->view('fbadmin');
    }
}
公共函数注册()
{
$this->form_validation->set_rules('email'、'email'、'required |有效的| email |是唯一的[fbadmin.email]);
$this->form\u validation->set\u error\u分隔符(“

”,“

”); 如果($this->form\u validation->run()==TRUE) { $data=$this->input->post(); 未设置($data['submit']); //打印($data);退出; $this->load->model('Fbadminmodel'); 如果($this->Fbadminmodel->signup($data)) { //$this->load->library('email'); $config=array( “协议”=>“smtp”, “smtp_主机”=>“smtp.googlemail.com”, “smtp_端口”=>“465”, 'smtp_用户'=>'anujk3313@gmail.com', 'smtp_pass'=>'password', “邮件类型”=>“html”, “字符集”=>“utf-8” ); //$this->email->initialize($config); $this->load->library('email',$config); $this->email->from($this)anujk3313@gmail.com","Anuj Kumar",; $this->email->to($data); $this->email->message('www.haiviral.com'); $this->email->set_newline(“\r\n”); 如果($this->email->send()) { //$this->session->set_flashdata('feedback','successfully registered.Please verify your email'); 回显“邮件发送”; } 其他的 { 显示_错误($this->email->print_debugger()); } } 其他的 { $this->load->view('fbadmin'); $this->session->set_flashdata('feedback','Registration Failed'); } //$this->session->flashdata('flash','Email Sent'); $this->load->view('fbadmin'); } 其他的 { 回显验证_错误(); $this->load->view('fbadmin'); } }
有一些事情可能是错误的。我要做的第一件事是设置您的
smtp\u超时
设置:

$config = array(
    'smtp_timeout'=>'30', //<-- add this
    'protocol'  =>'smtp',
    'smtp_host' =>'smtp.googlemail.com',
    'smtp_port' =>'465',
    'smtp_user' =>'anujk3313@gmail.com',
    'smtp_pass' =>'password',
    'mail_type' =>'html',
    'charset'   =>'utf-8'
);
$config=array(
'smtp_timeout'=>'30',//'smtp',
“smtp_主机”=>“smtp.googlemail.com”,
“smtp_端口”=>“465”,
'smtp_用户'=>'anujk3313@gmail.com',
'smtp_pass'=>'password',
“邮件类型”=>“html”,
“字符集”=>“utf-8”
);
接下来我将检查您的主机是否允许您访问端口465:

$fp = fsockopen("smtp.gmail.com", 465, $errno, $errstr, 10);
if (!$fp)
    echo "smtp.gmail.com 465  -  $errstr   ($errno)<br>\n";
$fp=fsockopen(“smtp.gmail.com”,465,$errno,$errstr,10);
如果(!$fp)
echo“smtp.gmail.com 465-$errstr($errno)
\n”;
如果它仍然不起作用,我会尝试禁用gmail的两步验证

添加ssl

$emailConfig = [
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'xxx@gmail.com',
        'smtp_pass' => 'xxx',
        'mailtype' => 'html',
        'charset' => 'iso-8859-1'
    ];

确保在php.ini和
“smtp\u主机”=>中启用了extension=php\u openssl.dllssl://smtp.googlemail.com“
,以int-valuephp\u openssl.dll的形式传递您的帖子,该文件已被openmake
“smtp\u主机”=>”ssl://smtp.googlemail.com“
,以int值传递帖子我不明白以int值传递帖子的含义抱歉@ShaileshSingh'smtp_timeout'=>'7'已在电子邮件类文件中设置,但得到相同的错误@dave