当我尝试使用发送电子邮件验证注册数据时,这里是完整的错误消息,我在本地尝试了电子邮件发送功能,并且它有效,但是当我将其部署到服务器时,我遇到了错误。
完整错误消息:
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: admin/Login.php
Line Number: 72
Backtrace:
File: /var/www/html/application/controllers/admin/Login.php
Line: 72
Function: _error_handler
File: /var/www/html/application/controllers/admin/Login.php
Line: 328
Function: sendEmail
File: /var/www/html/index.php
Line: 315
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: fsockopen(): unable to connect to ssl://smtp.gmail.com:465 (Permission denied)
Filename: libraries/Email.php
Line Number: 2069
Backtrace:
File: /var/www/html/application/controllers/admin/Login.php
Line: 79
Function: send
File: /var/www/html/application/controllers/admin/Login.php
Line: 328
Function: sendEmail
File: /var/www/html/index.php
Line: 315
Function: require_once
注意:我使用Codeigniter 3。
这是我发送电子邮件的配置,smtp.php :
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.gmail.com'; // host gmail
$config['smtp_port'] = 465;
$config['smtp_user'] = '[email protected]'; // i am using gmail
$config['smtp_pass'] = 'my_pass_app';
$config['smtp_crypto'] = 'ssl';
$config['mailtype'] = 'html';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;
$config['smtp_debug'] = 2;
$config['newline'] = "\r\n";
$config['crlf'] = "\r\n";
有什么解决办法吗?
您的电子邮件发送配置看起来没问题。但是,请确保您的 Gmail 帐户允许“不太安全的应用程序”访问它,因为直接使用用户名和密码被 Google 认为不太安全。如果不允许,请在您的 Google 帐户设置中允许安全性较低的应用程序。 https://myaccount.google.com/lesssecureapps
或者,您可以使用 OAuth 2.0 访问 Google API 来发送电子邮件,这样更安全。