fsockopen():无法连接到ssl://smtp.gmail.com:465

时间:2016-07-05 12:45:29

标签: codeigniter

$config = array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.gmail.com',
    'smtp_port' => '465',
    'smtp_user' => "xxxxxxx@gmail.com", 
    'smtp_pass' => "xxxxxxx", // change it to yours
    'mailtype'  => 'html', 
    'charset'   => 'utf8'
);

$this->load->library('email',$config);

$this->email->set_newline("\r\n");
$this->email->set_crlf( "\r\n" );

$this->email->from($config['smtp_user']);
$this->email->to($email['user_email']);         
$this->email->subject($row['tplsubject']);
$this->email->message(html_entity_decode($email_subject));
$this->email->send();

此代码无法显示错误

  

遇到PHP错误

     

严重性:警告

     

消息:fsockopen():无法连接到ssl://smtp.gmail.com:465   (无法找到套接字传输" ssl" - 您是否忘记启用   它配置PHP时?)

     

文件名:libraries / Email.php

     

行号:1689

2 个答案:

答案 0 :(得分:6)

这不是codeigniter问题,而是与php设置相关的问题。这个问题的答案可以在这里找到:Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?

需要注意的一点是,在codeigniter中,您可以使用电子邮件配置文件来保存所有配置设置。 (所以你不必每次都在控制器中定义它们)。您可以通过创建文件来完成此操作:application/config/email.php然后您可以使用您的设置填充此文件,如下所示:

<?php defined('BASEPATH') OR exit('No direct script access allowed');

$config = array(
    'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp'
    'smtp_host' => 'your_host',
    'smtp_port' => your_port,
    'smtp_user' => 'your_email',
    'smtp_pass' => 'your_password',
    'smtp_crypto' => 'security', //can be 'ssl' or 'tls' for example
    'mailtype' => 'html', //plaintext 'text' mails or 'html'
    'smtp_timeout' => '4', //in seconds
    'charset' => 'iso-8859-1',
    'wordwrap' => TRUE
);

每次加载库($this->load->library('email');)时,都会自动加载这些设置。

另外,我建议您立即更改电子邮件密码 ,因为您在问题中写了凭据。

答案 1 :(得分:0)

我在服务器上遇到与电子邮件相同的问题,此问题的解决方案是将“协议”从“ smtp”更改为“ ssmtp”,并将“ smtp_host”从“ ssl://smtp.gmail.com”更改为”到“ ssl://ssmtp.googlemail.com”。这东西对我来说很好。