2011-07-11 102 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){ 

} 
相关问题