无法通过Gmail SMTP在CodeIgniter中发送电子邮件

时间:2013-09-13 16:48:49

标签: php codeigniter ssl smtp gmail

我正在尝试使用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():无法连接到mailserver   “ssl://smtp.googlemail.com”端口465,验证您的“SMTP”和   php.ini中的“smtp_port”设置或使用ini_set()

     

文件名:libraries / Email.php

     

行号:1553

     

遇到错误

     

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

     

来自:“John Doe”回程路径:   回复:“myemail@gmail.com”X-Sender:   myemail@gmail.com X-Mailer:CodeIgniter X-Priority:3(正常)   消息ID:< 52333cd2aa4fb@gmail.com> Mime版本:1.0内容类型:   文本/无格式; charset = utf-8 Content-Transfer-Encoding:8bit   =?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/ extension = php_openssl.dll 已取消注释,但我找不到这一行: extension = php_smtp.dll ,这在上面的网站中提到过,所以我只是设置了< strong> [邮件功能] 部分到这样的

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

我该怎么做才能让这个工作?关于我缺少什么的什么想法?谢谢。任何帮助表示赞赏:)

3 个答案:

答案 0 :(得分:0)

尝试将此添加到您的$config数组:

$config['starttls'] = TRUE;

答案 1 :(得分:0)

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

答案 2 :(得分:0)

将$ config数组更改为以下

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