在使用PHP发送电子邮件时,一般意见是要避开PHP的内置mail()函数并使用库来代替.
我想知道的是使用mail()库或扩展的实际原因和缺陷.例如,通常指定的标头未包含在标准mail()调用中.
mar*_*cog 18
引用:
PHP
mail()功能的缺点在某些情况下,通过PHP发送的邮件
mail()没有收到收件人,尽管它是由WB发送的,没有任何错误消息.下面列出了该问题的最常见原因.
- 邮件标题或内容格式错误(例如Windows/Unix之间的换行符差异)
- 未在服务器上安装或配置sendmail(php.ini)
- recipeint的邮件提供者不允许PHP发送邮件
mail(); 常见垃圾邮件保护标头或内容格式的错误可能导致邮件被视为垃圾邮件.在最好的情况下,此类邮件将转移到收件人收件箱的垃圾邮件文件夹或发送回发件人.在最坏的情况下,这些邮件被删除而没有任何评论.如果未安装或未配置sendmail,则根本不能发送邮件.
免费邮件提供商(如GMX)通常会拒绝通过PHP函数发送的邮件
mail().通常这些邮件被删除而没有收件人的任何信息.
mail()据说PHP的标题是乱码而且运行缓慢.我不能从个人经验中说出这个,因为我从未使用它,因为,像你一样,我总是被建议反对它.如果您查看PHP手册中条目mail()的注释,您可以看到人们对它的一些问题(尤其是带有标题).
它绝对不适合发送任何大量的电子邮件,因为根据手册本身,
值得注意的是mail()函数不适合循环中的大量电子邮件.此功能为每封电子邮件打开和关闭SMTP套接字,效率不高.
要发送大量电子邮件,请参阅»PEAR :: Mail和»PEAR :: Mail_Queue包.
AFAIK,无论您发送的邮件数量多少,为您发送的每封邮件打开和关闭套接字都绝对不可取(性能方面).
基本上,它是一个有效的功能,但不是很好,并且被许多更好的库黯然失色.
重要的不仅是mail()函数,还有你使用的smtp服务器.我使用了三个不同的smtp服务器与php:postfix,qmail,sendmail.
根据我的经验,postfix是最容易使用php mail(),但即使是postfix也有一些问题.你会遇到小错误.它可能是"收件人"收到正确结构化的电子邮件和收到损坏的电子邮件的"密件抄送"收件人之类的东西.你会失去很多时间来弄清楚这些错误.并且您的修复程序将使您的代码与其他smtp服务器无法正常工作.
问题在于处理电子邮件标题和PHP,但遗憾的是,这项工作做得不好.最近我切换到"PHP Mailer"库.在我们的网站上,我们有两个smtp服务器,一个带有postfix,另一个带有qmail."PHP Mailer"与它们一起工作,没有其他配置.
| 归档时间: |
|
| 查看次数: |
9186 次 |
| 最近记录: |