2011-07-11 100 views
1

我已經爲比特幣挖掘編寫並開發了從頭開始定製的CMS包(Apache2 + PHP + Mysql + Puspoold +比特幣)。我有許多不同的發行版,我的用戶可以使用許多電子郵件程序(sendmail/postfix)。 我的應用程序在sendmail的本地計算機上工作正常,但它似乎不適用於商業類型的VPS系統,包括我自己的計算機(僅用於說明問題)。管理php電子郵件發送的最佳方式

反正什麼是在PHP中使用mail()函數的最佳方式? 有沒有更好的方法來從郵件輸出真正的錯誤,然後只是假? 也跟進問題,有時郵件()報告是真實的,它永遠不會發送。 我覺得很失落我通常從來沒有遇到這樣的PHP錯誤這個麻煩,我最終修復了這個問題,即使在重新發送sendmail軟件包後,它似乎仍然想工作。

注意:我已經編輯了php.ini文件以滿足我的需要,並且無所不用,並檢查了最佳的針對php的sendmail實踐。

+0

如果您的VPS正在使用exim4,您可能需要重新配置它以允許向外發送電子郵件。在ubuntu \ debian上是'[sudo] dpkg-reconfigure exim4' – mikeycgto

回答

0

我通常會通過第三方SMTP服務器中繼所有郵件一堆。這可以直接在php.ini中完成,或者通過重新配置本地郵件服務器來中繼所有電子郵件。

您使用的服務器取決於您。您可以嘗試設置您自己的設置並管理所有垃圾郵件阻塞問題等。或者使用第三方電子郵件服務,如SendGrid。

4

我建議你使用Zend Mail而不是原生的send()php函數。爲了使用它,你將需要複製的,包括了Zend庫(直接在您的應用程序或服務器配置內)

下面是一個例子:

$config = array(
     'auth' => 'login', 
     'username' => '[email protected]', 
     'password' => 'password', 
     'ssl' => 'tls', 
     'port' => 587 
    ); 

    $mailTransport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 
    Zend_Mail::setDefaultTransport($mailTransport); 


$mail = new Zend_Mail(); 
$mail->addTo($email); 
$mail->setSubject($subject); 
$mail->setBody($message); 
$mail->setFrom('[email protected]', 'User Name'); 

//Send it! 

try { 
    $mail->send(); 
} catch (Exception $e){ 

} 
相關問題