2011-07-28 55 views
0

上我無法接受我的本地服務器上的CakePHP的外殼電子郵件。無法發送從CakePHP的外殼電子郵件Ubuntu服務器

我已成立了一個Ubuntu服務器,並讓位於myapp/vendors/shellsreport.phpreport.php包括:

<?php 
class EmailShell extends Shell {  

    function main() { 
     App::import('Core', 'Controller'); 
     App::import('Component', 'Email'); 
     $this->Controller =& new Controller(); 
     $this->Email =& new EmailComponent(null); 
     $this->Email->initialize($this->Controller); 

     $this->Email->to = '[email protected]'; 
     $this->Email->subject = 'spain'; 
     $this->Email->from = 'blabla <[email protected]>'; 
     $this->Email->send('test email'); 
     $this->out('email sent'); 
    } 

} 
?> 

我可以運行在控制檯這個外殼並接受我的收件箱中的電子郵件發送「輸出,但沒有電子郵件。我也可以在成功發送電子郵件到我的電子郵件地址的控制器中運行類似的操作。在這兩種情況下,當電子郵件腳本運行時,在成功/不成功發送電子郵件之前,它將掛起1分鐘

我明白,這有很多的變數,但由於我能夠發送從控制器的電子郵件,但不是外殼,我相信這將刪除服務器的問題。

任何幫助,非常感謝。

+0

發送本地郵件應該是非常瞬間的。您是否正在使用某個可能超時的外部SMTP服務器,導致本地服務回退? –

+0

我沒有外部SMTP服務器(我不認爲)只是安裝了sendmail的本地ubunter服務器 – Alex

回答

1

這可能是DNS問題 - 如果在sendmail不是作爲一個守護進程運行時,它會啓動對每個郵件發送活動。如果您的服務器的主機名在啓動時無法由sendmail查找/解析,則它將等待DNS查找超時。最終它會繼續,但每次sendmail啓動時都會進行查找。

0

這是一個非常奇怪的現象。它從控制器的工作都是令人毛骨悚然的。 * nix發行版默認喜歡發送sendmail。 PHP將能夠從控制器發送電子郵件,因爲PHP以系統用戶身份運行,通常具有Apache的權限。另一方面,Cron可以挑選出引用它的人(即你),除了諸如(quel shock!)郵件服務器之類的東西外,還有其他兩千萬種可能的事情可能會阻止cron使用發送郵件。

或者嘿,如何回合這些谷歌SMTP設置::)

$this->Email->smtpOptions = array( 'port'=>'465', 
            'timeout'=>'30', 
            'host' => 'ssl://smtp.gmail.com', 
            'username'=>'[email protected]', 
            'password'=>'frosting', 
          ); 

提醒你,我以前沒有設置Gmail在貝殼自己,所以沒有承諾,但這次來到直出我的控制器上我的服務器,它對我來說工作正常。

- 爲$這個 - >的電子郵件 - >發送()實際發送,或者只是不示數了呢?

if($this->Email->send('test email')) { 
    $this->out('email sent'); 
} else { 
    $this->out('email falled'); 
} 

- 如果它說它正在發送,它試圖發送什麼?

$this->Email->delivery = 'debug'; 
// Untested, but you get the idea 
$mail = $this->Email->send(); 
$this->out($mail); 

除了蛋糕的應用程序日誌中應用程序的/ tmp /日誌/,/ VAR(開啓調試,如果需要記錄)/日誌/郵件,maillog的,安全的,和Apache的服務器日誌都會反映這一點。

- HTH :)

相關問題