我应该使用php mail函数还是phpmailer?

7

目前为止,我一直在使用内置函数mail()发送邮件,没有出现任何问题,甚至向1000多个用户发送了大量邮件。但是,最近我发现了这个phpmailer,它是专门设计用来发送电子邮件的。

Q1:我应该改用phpmailer吗?

Q2:使用phpmailer有什么优点?

Q3:我在phpmailer网站上找到了其他产品,比如phpmailer FE、ML等。这些是什么?你们使用哪一个?

Q4:有人试过使用phpmailer向2000多个用户发送大量邮件吗?如果有,会有什么问题吗?

1个回答

8

Q1: 你绝对应该停止使用mail()函数。

Q2: mail()函数只适合简单的邮件,邮件库可以隐藏很多低级别的内容,并提供简单的方法来创建HTML邮件、嵌入式图片等等。

我建议使用SwiftMailer代替phpmailer:

  • 支持使用SMTP、sendmail、postfix或自己实现的传输方式发送电子邮件
  • 支持需要用户名和密码和/或加密的服务器
  • 在不剥离请求数据内容的情况下,防范头部注入攻击
  • 发送符合MIME标准的HTML /多部分电子邮件
  • 使用事件驱动插件自定义库
  • 处理大型附件和内联/嵌入式图像,内存使用低

我曾使用SwiftMailer发送了15000多封邮件,但正如你会在SwiftMailer文档中发现的那样,建议按批次发送邮件(取决于服务器,例如每批100、200、500),使用cron。


1
取决于“bounce”发生的时间和地点。如果您的Swiftmailer连接的MTA拒绝地址,则可以检测到。请参见http://swiftmailer.org/docs/finding-failures。 - VolkerK
1
+1 表示“不使用邮件函数而使用现有类”:现有类已经完成了大部分工作,并且比您编写的任何代码都要经过更多测试 => 很大的优势! - Pascal MARTIN
正如VolkerK所说,如果您的服务器拒绝地址,您可以检测到,但要检测由其他服务器反弹的邮件,您需要为您的邮件设置返回地址。请参见http://swiftmailer.org/wikidocs/v3/sending/bounce_address。 - Željko Živković
我明白了。看起来这里没有phpmailer的支持者,是吗?我一定会好好研究swiftmailer的,谢谢 :) - bbtang

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