用于发送邮件的 SMTP 协议不适用于 codeigniter

Posted

技术标签:

【中文标题】用于发送邮件的 SMTP 协议不适用于 codeigniter【英文标题】:SMTP protocol to send mail is not working with codeigniter 【发布时间】:2017-06-27 18:16:09 【问题描述】:
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'smtp.gmail.com',
'smtp_port' => 465,
'smtp_user' => 'XXXX@XXXX.com',
'smtp_pass' => 'XXXX',
'mailtype'  => 'html', 
'charset'   => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");

$this->email->from('xxxxx@xxx.com', 'xxxx');
$this->email->to($email);

$this->email->subject('Hi');
$this->email->message('Hi');

if($this->email->send())

echo 'Your email was sent.';


else

show_error($this->email->print_debugger());

但它显示错误消息:fsockopen(): 无法连接到 smtp.gmail.com:465(连接被拒绝)。

我在Sending mail with CodeIgniter using SMTP protocol not working 看到了解决方案,但它不起作用,我无法找到 php.ini。

【问题讨论】:

你在本地尝试这个吗? 在本地服务器安装的驱动器/php/php.ini中找到php.in或者你可以找到它进入我的电脑并在搜索框中按ctrl+f写php.ini并查看结果 @parvez 不,我没有在本地主机上执行此操作,这就是为什么在我的计算机中找不到它。 ok 那你可以联系服务器管理员,找不到php.ini @Parvez 我找到了它,但它是一个只读文件。 --r--r--r。我没有超级用户访问它。 【参考方案1】:

我正在使用这种方式,它对我有用:

$config = array(
       'protocol'  =>  'smtps',
       'smtp_host' =>  'ssl://smtps.googlemail.com',
       'smtp_user' =>  DONOT_EMAIL,
       'smtp_pass' =>  EMAIL_PASSWORD,
       'smtp_port' =>  '465',
       'mailtype'  =>  'html',
       'smtp_timeout' => '4',
       'newline'   => "\r\n"
      );

此代码用于服务器端。 确保每次在本地或服务器中使用邮件功能。首先像这样初始化:

$this->email->initialize($config);

【讨论】:

以上是关于用于发送邮件的 SMTP 协议不适用于 codeigniter的主要内容,如果未能解决你的问题,请参考以下文章

SMTP协议解读以及如何使用SMTP协议发送电子邮件

登录凭据不适用于 Gmail SMTP

Python 邮件发送

Python 自动发送邮件

C#发送邮件源码

SMTP和HTTP协议一样都属于请求应答式协议