2013-08-12 248 views
0

我想發送帶有MAMP免費運行CI的電子郵件。但它不起作用,我的腳本遇到了無限循環,沒有任何事情發生...... 我需要設置一些東西,尤其是從本地主機發送電子郵件嗎?CodeIgniter + MAMP:無法發送電子郵件

這裏是CI我的電子郵件的配置:

$config = array(); 
    $config['protocol'] = 'smtp'; 
    $config['smtp_host'] = 'ssl://smtp.googlemail.com'; 
    $config['smtp_port'] = 465; 
    $config['smtp_user'] = '*****@gmail.com'; 
    $config['smtp_pass'] = '******'; 
    $config['mailtype'] = 'html'; 
    $config['charset'] = 'utf-8'; 
    $config['newline'] = '\r\n'; 

乾杯

編輯:這裏是我的代碼發送電子郵件:

$config = array(); 
    $config['protocol'] = 'smtp'; 
    $config['smtp_host'] = 'ssl://smtp.googlemail.com'; 
    $config['smtp_port'] = 465; 
    $config['smtp_user'] = '****'; 
    $config['smtp_pass'] = '*****'; 
    $config['mailtype'] = 'html'; 
    $config['charset'] = 'utf-8'; 
    $config['newline'] = '\r\n'; 

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

    $this->email->from('****'); 
    $this->email->to($email); 
    $this->email->subject($title); 
    $this->email->message($content); 

    $this->email->send(); 

    error_log($this->email->print_debugger()); 

隨着$標題,$內容和$在我的腳本的另一部分定義的電子郵件變量。不要擔心這件事,我已經檢查過我的問題不是由於這些。

+2

嗯,總是同樣的問題:_日誌文件說什麼?_ – arkascha

+0

哦,並注意:不要發送基於HTML的電子郵件,除非它真的是必要的。你問所有收件人無限的信任,因爲HTML電子郵件打開巨大的安全問題。純文本對於所有消息的99.9%是絕對足夠的。 – arkascha

+0

不用擔心html,這只是一個測試。 正如我所說,我得到了一個無限循環,在日誌中沒有任何內容(從$ this-> email-> send()或$ this-> email-> print_debugger()返回),並且郵件中沒有內容日誌後綴... –

回答

1

最後我找到了解決辦法:

發送電子郵件與MAMP(郵件()PHP函數)

  1. 設置SSL:http://soundsplausible.com/2012/01/14/enable-ssl-in-mamp-2-0-5/

  2. 設置後綴:http://benjaminrojas.net/configuring-postfix-to-send-mail-from-mac-os-x-mountain-lion/

  3. 進入甲基苯丙胺的php.ini文件(一目瞭然的phpinfo()瞭解所使用的版本,並得出結論該文件夾到你需要編輯) ,註釋行SMTP,smtp_portsendmail_from。取消註釋行sendmail_path並將/usr/sbin/sendmail -t -i設置爲新值。

如果PostFix能夠正常工作(運行上面的教程中的測試),您現在應該能夠發送電子郵件了。

發送電子郵件與CI

要發送電子郵件與CI,你並不需要您登錄寫入爲後綴的文件。但是,您需要能夠運行PostFix和SSL。

這裏是一個谷歌帳戶的配置文件的例子:

$config['protocol'] = "smtp"; 
    $config['smtp_host'] = "smtp.gmail.com"; 
    $config['smtp_port'] = "587"; 
    $config['smtp_user'] = "*****"; 
    $config['smtp_pass'] = "*****"; 
    $config['smtp_crypto'] = "tls"; //very important line, don't remove it 
    $config['smtp_timeout'] = "5"; //google hint 
    $config['mailtype'] = "text"; 
    $config['charset'] = "utf-8"; 
    $config['newline'] = "\r\n"; 

小心「」,這是必要的「」可能造成的問題。這裏我使用TLS連接。如果您更喜歡SSL,請使用端口465並正確修復smtp_crypto值。

1

您需要使用sendmaildetails how install it on MAMP)。或者,您可以使用下面的解決方案將電子郵件存儲在本地主機中(例如仿真電子郵件發送)。 我在本地主機(XAMPP)上使用此解決方案。也許它會對你有所幫助。

指定php.ini

sendmail_path = "path/to/php path/to/sendmail.php" 

第二步用於發送郵件路徑 - 你可以嘗試使用這個腳本

define('DIR','path/to/sendmail_dir'); 
    $stream = ''; 
    $fp = fopen('php://stdin','r'); 
    while($t = fread($fp,2048)){ 
     if($t === chr(0)){ 
      break; 
     } 
     $stream .= $t; 
    } 
    fclose($fp); 

    $fp = fopen(mkname(),'w'); 
    fwrite($fp,$stream); 
    fclose($fp); 

    function mkname($i=0){ 
     $fn = DIR.date('Y-m-d_H-i-s_').$i.'.eml'; 
     if (file_exists($fn)){ 
      return mkname(++$i); 
     } 
     else{ 
      return $fn; 
     } 
    } 
+0

我試圖配置我的php.ini,但它仍然無法正常工作,雖然命令行如'回聲'測試「| mail -s「主題」[email protected]「工作正常。 –

+0

您在ci日誌中看到任何錯誤? –

+0

另外,請添加您的代碼以發送電子郵件。你可以使用''this-> email-> print_debugger()''進行調試 –