PhpMailer和SwiftMailer哪个更好?

65
我正在编写一个相当简单的PHP脚本,需要发送带附件的电子邮件。 我找到了这两个库来实现这一功能。
这两个库是否有明显的优势?或者我应该随便选择一个就行了?

1
答案确实有些偏向观点,但都是经过深思熟虑的看法,我发现这些看法非常有价值,因为我要做出类似的决定。从点赞数量来看,似乎其他人也认为这些看法很有价值。 - James John McGuire 'Jahmic'
7
我在 Stack Overflow 上最有用的一半东西都是“不合适的话题”。在许多被“关闭为不合适话题”的问题中,我能看到“这已经不是合适的话题了,但它帮助了我”之类的评论。也许我们可以看到五个不同的管理员试图关闭一个问题,然而我们是否可以看到他们投票来改变这个政策呢?这个问题为什么比 SO 上发布的 98% 的问题更值得关闭?那些问题类似于“这段代码有什么问题?”或者关于如何完成一些极其具体的任务,这些对其他人来说从未相关过。 - obe
如果你在 GitHub 上查看,你会看到 SwiftMailer 有 7K 星,并且在 PHP 部分排名靠前。 - flik
PHPMailer在Github上拥有超过12K颗星。 - flik
PHPMailer可以使用mail()函数。SwiftMailer不能使用mail()函数,尽管mail()函数仍然受PHP支持。更多信息请参见https://github.com/swiftmailer/swiftmailer/issues/866 PHPMailer比SwiftMailer有更多的派生(forked)、星标(starred)和关注(watched)。 PHPMailer已关闭1361个问题,打开了35个问题。 SwiftMailer已关闭558个问题,打开了200个问题。 https://github.com/PHPMailer/PHPMailer https://github.com/swiftmailer/swiftmailer - vee
7个回答

56

我原本想说 PHPMailer 已不再开发,而 Swift Mailer 正在开发中。但当我谷歌搜索时……

https://github.com/PHPMailer/PHPMailer

这表明它正在被重新开发。

我经常使用 PHPMailer,它一直很稳定可靠。最近我开始使用 Swift Mailer,是因为上面提到的原因,但它也没有给我带来任何麻烦。

现在 PHPMailer 又在开发了,我想我可能会尝试新版本。

所以,我的答案是两者都很能胜任,而且差别不大——选择一个,学会使用就可以了。它们都比 mail() 函数有着更多的优势,并抽象出电子邮件的细节,以便您可以专注于您真正想要开发的事情。


3
PHPMailer现在已经迁移到GitHub了。新链接为https://github.com/Synchro/PHPMailer。 - Dracs
13
要明确一点(我是维护者),PHPMailer现在位于此答案中提供的地址[https://github.com/PHPMailer/PHPMailer],而不是旧的sourceforge、google code仓库或我的个人分支(Synchro)。 - Synchro

34

5
我能知道为什么我收到了负评吗?当我们想要在我们的可分发项目中使用其中之一时,许可证方面存在很大的差异。 - M A Hossain Tonu
9
我认为匿名的负评似乎没有根据 - 这是一个好观点。但是,如果您能指出两种许可证之间的任何重要差异,那么这篇文章将更有价值...? - Steve Chambers
11
有人的点赞已经解决了这个问题 :) 无论如何,这两种许可证之间的主要区别在于:LGPL是“传染性”的,这意味着如果你使用它,你可能会冒险被迫(L)GPL自己的作品。GPL(以及根据情况,LGPL)实际上排除了在闭源项目中使用。MIT则是“可以做任何事情”的许可证,除了假装代码是你的之外,你可以随意使用我的代码。 - M A Hossain Tonu
1
非常有帮助 - 非常感谢 - Steve Chambers
10
M A Hossain Tonu关于LGPL是“具有感染性”的评论是完全错误的。GPL和LGPL之间的区别就在于:GPL是一种强制使用版权协议,这意味着您的所有代码都必须更改为与GPL兼容的许可协议,而LGPL只针对分发库中的代码部分采用了版权协议,不包括您的应用程序代码。对于像PHPMailer这样的库,LGPL是完全没有问题的,也与您自己的代码毫不相关,这个许可证完全不会对您产生任何影响。 - iquito
显示剩余2条评论

9

还有Zend_Mail。如果我今天要为一个新项目选择一个,我会认真考虑它。


9
似乎不能独立使用,我认为需要使用整个Zend库,这个最小版本已经压缩了超过6MB。 - Marco Demaio
1
Zend_Mail非常好用,但是如果你不使用Zend Framework,那么需要整个框架有点不划算,特别是对于小项目来说。 - MaxiWheat
1
ZF Mail不需要整个6mb框架。Zend Framework最好的特点之一是您可以仅使用所需的类。但是,您仍然需要从Zend包含大约10-20个文件。 - divix

8

经过比较,我认为SwiftMailer的界面比PHPMailer更好,并且正如某些人指出的那样,如果你正在使用其他Zend组件,Zend_Mail也是另一个不错的选择。如果你使用同一框架的所有内容,生活会变得更加轻松。


这个线程也许会有用:http://forums.phplist.com/viewtopic.php?t=8270 - Steve Chambers

6

谷歌趋势:SwiftMailer正在增长,但PHPMailer仍然非常强大

我会选择Swiftmailer,因为文档清晰易懂。Phpmailer网站/文档有点混乱(至少看起来是这样)。


编辑:在尝试了它们两个(并针对其中的一个托管问题进行头痛,SwiftMailer没有输出任何提示类型)之后,我完全改变了主意,我肯定会选择PHPMailer,至少有一个很好的原因:如果出现任何问题,调试要容易得多。

SwiftMailer和PHPMailer都提供调试选项(SwiftMailer使用插件,而将SMTPDebug = 2打开的PHPMailer),但是由成百上千个小文件组成的SwiftMailer比PHPMailer的3个文件更难调试。

至于文档,PHPmailer文档看起来没有那么花哨,但它拥有你所需的一切:简单教程例子


大多数上述的PHPMailer链接已经过时了 - 现在你应该从这里开始(https://github.com/PHPMailer/PHPMailer)。 - Synchro
@Synchro:我更新了链接,下次你可以随意编辑我的答案并自行修复。 - Marco Demaio
2
SwiftMailer由数百个小文件组成,与PHPMailer的3个文件相比,使得SwiftMailer更难调试。这是一个糟糕的推理。文件数量不应该是使用库或调试的决定因素,因为调试不涉及对文件进行操作,而是涉及执行流程的步进。 - MrMesees
1
@MrMesees:透過查看數百個微小文件來進行執行流程的步驟比查看幾個較大的文件更耗時。 :) - Marco Demaio

6

我在许多项目中都使用过PHPMailer,从未遇到问题。它具备完整的功能并有良好的文档。

我之前从未听说过Swiftmailer,于是看了一眼官网。它似乎也是一个不错的解决方案。

如果您的需求像您所说的那么简单,那就随意选择一个。


4

由于PHPMailer和PHP 5.3的问题,甚至最新版本也有这个问题,我今天刚刚转向使用Swift。这是一件遗憾的事情。Swift有非常完善的文档集成,使事情变得更加容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接