Home Articles

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

Asked
Viewed 1366 times
1

我正在尝试使用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上的邮件服务器,验证php.ini中的“SMTP”和“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-Version:1.0 Content-Type:text / plain; 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 这是在上面的网站中提到的所以我只是将 [mail function] 部分设置为这样的东西

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

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

3 Answers

  • 0

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

    $config['starttls'] = TRUE;
    
  • 0

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

  • 0

    更改您的$ config数组如下

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

Related