2013-11-22 63 views
3

我使用outlook.com自定義域(例如,[email protected]SMTP錯誤使用CodeIgniter和Gmail

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

OpenSSL是啓用

不任何人有任何想法是怎麼回事? 我已經嘗試了許多解決方案,他人的例子。它不起作用。 我有服務提供商查詢,他們不會阻止端口

的配置(在配置/ email.php)

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

這是我如何發送電子郵件(在控制器/ test.php的)

$this->load->library('email'); 
$this->email->from('[email protected]', 'my name'); 
$this->email->to('[email protected]'); 
$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: 
...... 
+1

從主機中刪除'ssl://'。您可以分別定義安全方法。 – SamV

+0

@FruityP,謝謝我發生了這樣的錯誤:無法發送AUTH LOGIN命令。錯誤:530 5.7.0必須首先發出STARTTLS命令。 er3sm54076020pbb.40 - gsmtp –

回答

0

使用

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

port 465 is not open –

+0

然後試試這個 $ config ['smtp_host'] ='tls://smtp.googlemail.com'; $ config ['smtp_port'] ='587'; –

+0

使用ssl端口465應該打開谷歌 –

0

使用此:

$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

+0

'smtp_user'=>'用戶',//沒有[at] gmail.com ......我認爲[at] gmail.com是必需的。 – SASM

+0

我已經使用了@gmail的確切代碼,它工作。也許它與Gmail的雙向工作。我想推薦它以防萬一 – Tim

+0

它適用於兩種方式。就像您登錄gmail時一樣,您可以使用或不使用@ gmail.com。 –

1

由於@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'; 

它會奏效。