PHP邮件功能和使用Sendgrid、Mandrill等电子邮件传递服务的区别

PHP邮件功能和使用Sendgrid、Mandrill等电子邮件传递服务的区别,php,email,Php,Email,我正在构建一个程序,需要根据特定事件发送多封电子邮件。我已经使用PHP邮件函数进行了编码,但有人建议我不要使用它 有人能解释一下PHP邮件功能与使用Sendgrid、Mandrill等商业服务之间的区别吗?当我可以很好地使用免费的PHP mail函数发送邮件时,为什么还要使用这些服务呢?mail()函数在*nix系统上非常简单,它只执行本地命令sendmail来发送邮件。它确实有以下缺点: 在许多廉价的托管环境中不起作用 若邮件被发送MTA接受,您并没有任何信息,它可能会被拒绝或隔离,或者永远

我正在构建一个程序,需要根据特定事件发送多封电子邮件。我已经使用PHP邮件函数进行了编码,但有人建议我不要使用它

有人能解释一下PHP邮件功能与使用Sendgrid、Mandrill等商业服务之间的区别吗?当我可以很好地使用免费的PHP mail函数发送邮件时,为什么还要使用这些服务呢?

mail()函数在*nix系统上非常简单,它只执行本地命令
sendmail
来发送邮件。它确实有以下缺点:

  • 在许多廉价的托管环境中不起作用
  • 若邮件被发送MTA接受,您并没有任何信息,它可能会被拒绝或隔离,或者永远留在本地队列中
  • 在某些环境中,由于EOL字符错误(\r\r\n而不是\r\n),它可能会生成乱码头
我认为您应该使用像或这样的开源库,因为除了发送邮件之外,它还有更多的功能。 这些库的一些优点:

  • 您可以轻松地发送带有附件和图像的HTML邮件
  • 您可以通过外部SMTP服务发送邮件
  • 他们有DKIM和S/MIME签名支持

另外,我不使用Sendgrid、Mandrill等商业服务,因此无法进行比较

您不能使用此功能一次性发送大量电子邮件。 例如,如果您想向10万用户发送电子邮件,则必须迭代电子邮件ID。是的,您可以使用cc,但是如果您有一个模板,在每个电子邮件中都会添加用户名,如:

尊敬的用户abc

你得一个接一个地寄。除非使用多个进程,否则无法在邮件功能中实现此突发电子邮件拍摄功能

MailQueue
很好,但我使用过它,它做同样的事情,将电子邮件保存到数据库中,并将电子邮件排成队列,然后逐个发送

我们还有
swift-mailer


同样,这是你的要求。如果您不需要发送数百个对时间敏感的通知,那么就不需要这些工具。

将mail()与商业服务进行比较就像将ant与elephant进行比较一样。如果您不需要大量定制,mail()对于一些来自服务器的快速通知是很好的,但是如果您想做一些类似电子邮件活动的事情,您必须进行大量额外的服务器设置,并在mail()函数周围构建大量定制功能。商业服务有利于活动,但不利于通知(在imho中浪费金钱)。尝试在电子邮件中使用一些开源php库,这将为您排序许多自定义功能。

批量邮件和活动管理是一项复杂的组织和技术挑战,但大多数开源php库(只添加html格式和附件支持)都无法帮到您

他们不会处理、垃圾邮件陷阱避免、订阅管理等问题。哪些好的批量电子邮件提供


如果您知道自己在做什么,对系统和NS记录拥有完全的管理权限,并有时间编写代码,那么,是的,您可以构建相同的服务—但不仅仅是将蚂蚁与大象进行比较—而是将扳手与橘子进行比较。

首先,从专业角度看,我是全球ESP的一部分“这有助于品牌最多向客户发送业务关键型触发式和事务性电子邮件

但是,我在这里回答这个问题的目的并不是推广ESP over PHP邮件功能。我将与大家分享我们在Pepipost实验室研究期间观察到的一些事实

  • PHP邮件函数只是生成电子邮件的基本方法/核心函数。但是,它不能大规模地发送您的电子邮件,也不能帮助您更好地发送电子邮件,这两个都是任何业务的关键

  • 随着更复杂技术和算法的发展,ISP(Gmail、yahoo、Outlook等)和垃圾邮件过滤器变得越来越智能。在到达邮箱之前,每封电子邮件都会经过所有这些过滤器,在这些过滤器中扫描内容、信誉和其他参数。因此,拥有良好声誉的IP和信封域非常重要

  • 一旦电子邮件到达收件人服务器,它将被发送、阻止或反弹。在反弹、垃圾邮件投诉、取消订阅的情况下,收件人服务器将与您的服务器通信,在这种情况下,您需要正确处理所有这些问题,否则您的域和IP的声誉将下降

  • 在节流的情况下,需要另一组复杂的交付逻辑


    简而言之,如果您计划发送几百封电子邮件,那么PHP mail函数可能可以使用,但要进一步扩展,使用一个好的ESP(电子邮件服务提供商)是很重要的。

    IMHO如果您注意正确创建邮件头,那么使用
    mail()
    函数并没有什么问题。如果您拥有并维护自己的邮件服务器,并且不想使用这些服务可能提供的任何附加功能,那么您可能不需要这些服务,那么它会有一些问题。并非每个人都维护(或希望维护)自己的邮件服务器,有些用例需要额外的功能,开发成本会更高。不受支持的断言(如“有许多缺点”和“更多功能”)没有多大帮助。您提到的产品中的额外功能涉及参数验证、格式设置和与MTA的连接,这些都与原始问题无关。我添加了一些库的优点和mail()函数的缺点。您的缺点都不是专门针对