【问题标题】:Best way to manage php email sending管理php电子邮件发送的最佳方法
【发布时间】:2011-10-02 11:08:49
【问题描述】:

我已经编写并开发了一个从头开始定制的 CMS 包(Apache2+PHP+Mysql+Puspoold+Bitcoin),用于比特币挖掘。我有很多不同的发行版供我的用户使用,同时还可以选择许多电子邮件程序(sendmail/postfix)。 我的应用程序在带有 sendmail 的本地计算机上运行良好,但它似乎不适用于商业类型的 VPS 系统,包括我自己的与本地计算机分开的系统(只是为了说明这一点)。

无论如何,在 PHP 中使用 mail() 函数的最佳方法是什么? 有没有更好的方法来获取从邮件中输出的实际错误然后只是假的? 还要跟进问题,有时 mail() 报告为 true 并且它从不发送。 我感到很迷茫,我通常从来没有遇到过这么多的 PHP 错误问题,我最终修复了它们,即使在重新安装 sendmail 包之后,这似乎也不想工作。

注意:我已经根据需要编辑了 php.ini 文件,但仍然没有任何内容,并检查了 php 的最佳 sendmail 做法。

【问题讨论】:

  • 如果您的 VPS 使用 exim4,您可能需要重新配置它以允许向外部发送电子邮件。在 ubuntu\debian 上是 '[sudo] dpkg-reconfigure exim4'

标签: php email sendmail send


【解决方案1】:

我建议你使用 Zend Mail 而不是原生的 send() php 函数。为了使用它,您需要复制并包含 Zend 库(直接在您的应用程序或服务器配置中)

这是一个例子:

$config = array(
        'auth' => 'login',
        'username' => 'username@gmail.com',
        '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('username@gmail.com', 'User Name');

//Send it!

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

}

【讨论】:

    【解决方案2】:

    试试PEAR MAIL

    【讨论】:

      【解决方案3】:

      PHPMailer

      这里有一堆关于如何使用 php mailer 的例子

      http://phpmailer.worxware.com/index.php?pg=examples

      【讨论】:

        【解决方案4】:

        我通常会通过第 3 方 smtp 服务器中继所有邮件。这可以直接在 php.ini 中完成,或者通过重新配置本地邮件服务器来中继所有电子邮件。

        您使用什么服务器取决于您。您可以尝试自行设置并管理垃圾邮件拦截等所有问题。或使用第三方电子邮件服务,如 SendGrid。

        【讨论】:

          【解决方案5】:
          猜你喜欢
          • 2012-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-30
          • 2013-04-28
          • 2010-10-30
          • 1970-01-01
          • 2011-08-25
          相关资源
          最近更新 更多