2013-05-26 80 views
0

當我嘗試發送來自localhost的電子郵件時,一切正常。但是當我將我的應用程序上傳到服務器時,電子郵件功能不再有效!我使用Gmail帳戶。本地主機發送電子郵件但不在服務器中

這裏是我的config/email.php文件:

$config['useragent']  = 'CodeIgniter';   
$config['protocol']   = 'smtp';   
$config['mailpath']   = '/usr/sbin/sendmail'; 
$config['smtp_host']  = 'ssl://smtp.googlemail.com'; 
$config['smtp_user']  = '[email protected]'; 
$config['smtp_pass']  = 'my_password'; 
$config['smtp_port']  = 465; 
$config['smtp_timeout']  = 80; 
$config['wordwrap']   = TRUE; 
$config['wrapchars']  = 76; 
$config['mailtype']   = 'html'; 
$config['charset']   = 'utf-8'; 
$config['validate']   = FALSE; 
$config['priority']   = 3; 
$config['crlf']    = "\r\n"; 
$config['newline']   = "\r\n"; 
$config['bcc_batch_mode'] = FALSE; 
$config['bcc_batch_size'] = 200; 


$config['sender_name']  = 'Name'; 
$config['from_email']  = '[email protected]'; 
$config['to_email']  = '[email protected]'; 
$config['email_subject']  = 'Email Subject'; 

這是我收到一封電子郵件在我的控制器:

$this->load->library('email'); 
$this->email->from($this->config->item('from_email'), $this->config->item('sender_name')); 
$this->email->to($this->config->item('to_email')); 
$this->email->subject($this->config->item('email_subject')); 
$this->email->message($string); 

if (!$this->email->send()) 
{ 
    $data['success'] = FALSE;   
} 
else 
{ 
    $data['success'] = TRUE;    
} 
$this->_example_output('layouts/sendemail_confirm.php', $data); 

這是我收到的錯誤:

遇到PHP錯誤

嚴重性:警告

消息:的fsockopen()[function.fsockopen]:無法連接到 SSL://smtp.googlemail.com:465(連接被拒絕)

文件名:庫/ Email.php

行號:1689

一個PHP錯誤遇到

嚴重性:警告

消息:fwrite的()預計參數1是資源,給定

文件名布爾:庫/ Email.php

行號:1846

遇到

甲PHP錯誤

嚴重性:警告

消息:與fgets()預計參數1是資源,布爾給出

文件名:庫/ Email.php

行號:1869

回答

1

使用SMTP主機爲 「smtp.gmail.com」 $配置[ 'smtp_host'] = 'smtp.gmail.com' 試用;

+0

後嘗試這樣做。沒有工作! – iTurki

1

消息:的fsockopen()[function.fsockopen]:無法連接到SSL://smtp.googlemail.com:465(連接被拒絕)

這有可能是你的服務器的IP地址是由於之前的垃圾郵件企圖,被Google列入黑名單......這是共享的託管帳戶嗎?雲託管帳戶?等等?所有這些都是可以接受的。

也可能存在與域名和地址的反向DNS查找不匹配,或者域的DNS可能具有阻止Google接受郵件的SPF策略設置或主機名的信封問題,使用127.0.0.1作爲始發地址。

同時檢查你的php。ini設置以確保您在兩個系統上使用/或不使用sendmail_from=mail.add_x_header=的方式相同。

0

使用此配置選項

$config['protocol'] = 'smtp'; 
    $config['mail_path'] = 'ssl://smtp.googlemail.com'; 
    $config['smtp_host'] = 'ssl://smtp.googlemail.com'; 
    $config['smtp_port'] = 465; 

而且加入這行,裝載電子郵件庫

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

試過了。沒有工作。 – iTurki

+0

@iturki,同樣的錯誤? – sakibmoon

+0

Yub,同樣的錯誤。 – iTurki

0
$config = Array(
     'protocol' => 'mail', 
     'smtp_host' => 'ssl://smtp.googlemail.com', 
     'smtp_port' => 465, 
     'smtp_user' => '[email protected]', // change it to yours 
     'smtp_pass' => '[email protected]', // change it to yours 
     'mailtype' => 'html', 
     'charset' => 'iso-8859-1', 
     'wordwrap' => TRUE 
    ); 

    $this->load->library('email', $config); 
    $this->email->set_newline("\r\n"); 
    $this->email->from($from); // change it to yours 
    $this->email->to($to);// change it to yours 
    $this->email->subject($subject); 
    $this->email->message($message); 
    $this->email->send(); 
+1

你能解釋一下你的解決方案在做什麼。這不是很有用。 –

相關問題