在 CodeIgniter 中通过 Gmail SMTP 发送电子邮件时遇到问题


Trouble sending email in CodeIgniter via Gmail SMTP

我正在尝试使用Gmail SMTP服务器从使用CodeIgniter构建的应用程序发送电子邮件,但没有运气。我以用户身份使用我的 Gmail 帐户,但为了保密起见,我正在更改此处的配置。我使用了下面的代码

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = 465;
$config['smtp_user'] = 'myemail@gmail.com';
$config['smtp_pass'] = 'mypassword';
$config['mailtype'] = 'html';

//load email library
$this->load->library('email', $config);
$this->email->set_newline("'r'n");
$message = "Please validate your registration using this link: $link.";
$this->email->to($email);
$this->email->from('myemail@gmail.com', 'John Doe');
$this->email->subject('Validate Your Registration');
$this->email->message($message);
if($this->email->send())
{
    $this->session->sess_destroy();
    redirect(base_url()."thanks/indi/$id");
}
else
{
    show_error($this->email->print_debugger());
}

以下是每次出现的 2 条错误消息:

遇到 PHP 错误

严重性:警告

消息:mail():无法连接到位于 "ssl://smtp.googlemail.com"端口 465,验证您的"SMTP"和 php中的"smtp_port"设置.ini或使用ini_set()

文件名:库/电子邮件.php

行号:1553

遇到错误

无法使用 PHP mail() 发送电子邮件。您的服务器可能不是 配置为使用此方法发送邮件。

寄件人: "约翰·多伊" 返回路径: 回复:"myemail@gmail.com"X-发件人: myemail@gmail.com X 邮件:代码点火器 X 优先级:3(正常) 邮件 ID:<52333cd2aa4fb@gmail.com> MIME 版本:1.0 内容类型: 文本/纯文本;字符集=utf-8 内容传输编码:8 位 =?utf-8?Q?Validate_Your_Registration?= 请使用此链接验证您的注册: http://mywebsite.com/registration/index.php/validate/32/1afa34a7f984eeabdbb0a7d494132ee5。

我尝试了 587 作为端口,ssl://smtp.googlemail.com 作为主机,并尝试了不同的组合来尝试它是否可以工作。我也尝试了通常的数组构造函数来声明配置数组(例如$config = array('protocol' => 'smtp', ...)/$config = Array('protocol' => 'smtp', ...) )。我什至尝试将端口放在单引号内,并在配置中添加了一个smtp_timeout。

另外,我根据此页面的内容设置了我的php.ini:http://adisembiring.wordpress.com/2010/01/17/sending-gmail-email-using-codeigniter/扩展名=php_openssl.dll 未注释,但我找不到上面网站上提到的这一行:extension=php_smtp.dll,所以我只是将 [mail 功能] 部分设置为这样的内容

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = ssl://smtp.gmail.com
; http://php.net/smtp-port
smtp_port = 465

我应该怎么做才能让它工作?关于我缺少什么有什么想法吗?谢谢。任何帮助都值得赞赏:)

如果您使用的是两步验证,是否生成了应用程序专用密码?

尝试将其添加到$config数组中:

$config['starttls'] = TRUE;

按如下方式更改$config数组

$config['smtp_host']  = 'ssl://smtp.googlemail.com';