簡體   English   中英

CodeIgniter和gmail的SMTP錯誤

[英]SMTP error with CodeIgniter and gmail

我在outlook.com中使用自定義域名(例如,nono @ forexample.com)

我正在使用代碼點火器電子郵件庫

Openssl已啟用

有誰知道發生了什么事? 我已經嘗試過其他人的例子。 它不起作用。 我檢查過服務提供商,他們沒有阻止端口

配置(在config / email.php)

$config['protocol']='smtp';
$config['smtp_host']='ssl://smtp.googlemail.com';
$config['smtp_port']='587';
$config['smtp_timeout']='30';
$config['smtp_user']='thenameidontknow@gmail.com';
$config['smtp_pass']='password';
$config['charset']='utf-8';
$config['newline']='\r\n';

以下是我發送電子郵件的方式(在controller / test.php)

$this->load->library('email');
$this->email->from('thenameidontknow@gmail.com', 'my name');
$this->email->to('lalalala@live.com');
$this->email->subject('test title or subject');
$this->email->message('the content');
$this->email->send();
echo $this->email->print_debugger(); 

我收到了這么長的錯誤信息

A PHP Error was encountered

Severity: Warning

Message: fsockopen() [function.fsockopen]: SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Filename: libraries/Email.php

Line Number: 1689

A PHP Error was encountered

Severity: Warning

Message: fsockopen() [function.fsockopen]: Failed to enable crypto

Filename: libraries/Email.php

Line Number: 1689

A PHP Error was encountered

Severity: Warning

Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.googlemail.com:587 (Unknown error)

Filename: libraries/Email.php

Line Number: 1689

A PHP Error was encountered

Severity: Warning

Message: fwrite() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Warning

Message: fgets() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1869

A PHP Error was encountered

Severity: Warning

Message: fwrite() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Warning

Message: fgets() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1869

A PHP Error was encountered

Severity: Warning

Message: fwrite() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Warning

Message: fgets() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1869

A PHP Error was encountered

Severity: Warning

Message: fwrite() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Warning

Message: fgets() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1869

A PHP Error was encountered

Severity: Warning

Message: fwrite() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Warning

Message: fwrite() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Warning

Message: fgets() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1869

The following SMTP error was encountered: 0 
Unable to send data: AUTH LOGIN
Failed to send AUTH LOGIN command. Error: 
Unable to send data: MAIL FROM:
......

正如@SamV在評論中指出的那樣,問題在於system/libraries/Email這一行:

$ssl = ($this->smtp_crypto === 'ssl') ? 'ssl://' : '';

$this->_smtp_connect = fsockopen($ssl.$this->smtp_host,
                        $this->smtp_port,
                        $errno,
                        $errstr,
                        $this->smtp_timeout);

如果從smtp_host中刪除ssl://並將其保留為:

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

它會工作。

使用

 $config['smtp_port']='465';

用這個:

$config = Array(
   'protocol' => 'smtp',
   'smtp_host' => 'ssl://smtp.googlemail.com',
   'smtp_port' => 465,
   'smtp_user' => 'user', //without @gmail.com
   'smtp_pass' => 'pass'
 );
$this->load->library('email',$config);

確保你不使用@ gmail.com用於smtp_user

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM