【问题标题】:SwiftMailer, PhpMailer, etc: Difference between mail() and sendmailSwiftMailer、PhpMailer 等:mail() 和 sendmail 之间的区别
【发布时间】:2016-01-08 17:45:50
【问题描述】:

我经常读到 PHP 的 ma​​il()-Function 在内部使用 sendmail

那么为什么像 SwiftMailer、PhpMailer 等邮件库让我们有机会在 ma​​il()sendmail 之间进行选择?

不是一样的吗?

从来没有人说这不是一回事!

请帮忙,因为我真的很困惑!

【问题讨论】:

  • mail() 主要用于单个电子邮件(为您发送的每封电子邮件打开和关闭一个 SMTP 套接字),而 sendmail() 更多用于批处理(很多)

标签: php email phpmailer sendmail swiftmailer


【解决方案1】:

在类 unix 系统上,mail() 确实使用 sendmail,但在 Windows 上却不是这样(根本没有 sendmail,所以mail() 改为通过 SMTP 发送)。

Swiftmailer 等人的真正好处是,它们提供了围绕发送电子邮件的 OOP 包装器,因此您的电子邮件内容生成是抽象的(正确生成 MIME 信封和正确获取标题可能很棘手,尤其是当用户输入需要转义),并且实际的传输机制也被抽象了(因此您可以使用邮件提供商的 API 将 SMTP 或 sendmail 传输替换为自定义传输,而无需更改所有代码)。

【讨论】:

    【解决方案2】:

    一个典型的 sendmail 二进制文件(例如来自 postfix 的一个),即使通过 PHP 的 mail 函数调用,也会打开与 localhost 的同步连接并执行完整的 SMTP 事务。这可能意味着它实际上比直接使用 SMTP 慢 - 如果您正在寻找性能,实际上the postfix docs recommend using SMTP to localhost 优先于 sendmail。特别是在使用 SMTP 发送大量消息时,您可以从 keepalive 中受益。

    一个技巧是您可以向 sendmail(特别是 -O DeliveryMode=b)传递一个附加参数,以告诉它异步操作,在这种情况下它会立即返回,从而使您的邮件发送响应更快,但因为未设置 PHP要处理这个问题,您将失去处理可能发生的错误的能力,因此不建议这样做。您可以通过使用这些选项自己调用 sendmail 二进制文件来使用它,或者将其传递给 $additional_parameters 参数。

    一般来说,PHPMailer 中的 mail 和 sendmail 选项之间没有任何区别,但如果您想使用 PHP 设置使用的 sendmail 二进制文件以外的二进制文件,它可能会很有用。

    【讨论】:

    • OHHH NOOO 你将 posrtfix 与 sendmail 和发送电子邮件混淆了
    • 一点也不。我确实知道区别,这个答案直接解决了这个问题。鉴于您发布的答案,我不会在您的意见中投入太多。
    【解决方案3】:

    我通常使用 mail() 函数。但有时我需要通过非本地 SMTP 服务器发送电子邮件。当然我可以更改 php.ini 中的设置,但我认为更好的是使用一些电子邮件库。我的选择是 Swift Mailer。

    【讨论】:

    • 真的可以将 php.ini 配置为使用非本地 SMTP(如 GMail)吗?我一直为此使用sendmail。没有sendmail真的可以吗?如果是:我应该在哪里(在 php.ini 中)放置用户名、密码和 ssl/tls。 Php.ini 中的 [mail function] 部分不提供这样的功能。
    • 我使用 Windows 服务器。此选项效果很好 [邮件功能] ;仅适用于 Win32。 SMTP = mail.yourserver.com smtp_port = 25 auth_username = smtp-username auth_password = smtp-password sendmail_from = you@yourserver.com
    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 2019-01-14
    • 2015-04-13
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多