无法使用CodeIgniter发送电子邮件

时间:2013-06-19 00:38:22

标签: php codeigniter email

我是CI和PHP的新手。目前我正在使用xammp来运行PHP,Apache和MySql。现在我正在尝试发送带有CI的电子邮件。但我经常遇到如下错误。

  

遇到PHP错误

     

严重性:警告

     

消息:fsockopen():无法连接   ssl://smtp.googlemail.com:465(连接尝试失败,因为   连接方在一段时间后没有正确回应,或者   建立的连接失败,因为连接的主机失败了   响应。 )

     

文件名:libraries / Email.php

     

行号:1689

我有谷歌约三个小时仍然没有找到解决方案。我已经在Apache中启用了“openssl”。我想描述我的电子邮件控制器类的编码。

//电子邮件控制器代码'索引'功能

$this->load->library('email');
    $this->email->set_newline("\r\n");

    $config['charset'] = 'utf-8';
    $config['wordwrap'] = TRUE;
    $config['mailtype'] = 'html';
    $config['protocol'] = 'smtp';
    $config['smtp_port'] = 465;
    $config['smtp_host'] = 'ssl://smtp.googlemail.com';
    $config['smtp_user'] = "something@gmail.com";
    $config['smtp_pass'] = "xxx";

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

    $this->email->from('something@gmail.com', 'NayLinAung');
    $this->email->to('something@gmail.com');
    $this->email->subject('This is an email test');
    $this->email->message("It is working, Great! You will be successful.");

    if ($this->email->send())
    {
        echo "Email was successfully sent.";
    }
    else {  
        show_error($this->email->print_debugger());
    }

当我将'smtp'更改为'mail'时,不会发生错误,但实际上并未发送电子邮件。另外,我关闭了我的Windows防火墙。

请为此错误提供任何解决方案。

2 个答案:

答案 0 :(得分:1)

我之前发现的是:

要在CodeIgniter中使用Google SMTP,您需要对Gmail帐户设置进行两(2)次更改:(请注意,攻击者现在更容易侵入您的帐户 - Google) / em>的

  
      
  1. 启用两步验证
  2.   
  3. 允许安全性较低的应用:开启(或启用)
  4.   

现在使用id作为'smtp_host'而不是ssl://smtp.gmail.com

此问题也在this link中讨论过。

希望得到这个帮助。

答案 1 :(得分:0)

如果你可以使用 试试这个 IMAP

Codeigniter Imap Library

您可以使用此代码连接

$config['protocol'] = "imap";
$config['imap_host'] = 'xxx.xxx.xxx.xxx';
$config['imap_user'] = 'user@domain.com';
$config['imap_pass'] = 'Jk98S**Jlk';
$config['imap_port'] = '993';
$config['imap_mailbox'] = 'INBOX';
$config['imap_path'] = '/imap/ssl/novalidate-cert'; // use this string if you do not want use ssl
$config['imap_server_encoding'] = 'utf-8';
$config['imap_attachemnt_dir'] = './tmp/';
$this->load->library('email', $config);
$this->email->from($frommail);
$this->email->to($tomail);
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
echo $this->email->print_debugger();

您也可以使用 SMTP 但如果你有意志  我建议你使用 IMAP 。 它有更多的功能,它比 SMTP ...

更新