使用php的本机邮件功能有什么问题吗?

时间:2009-09-28 08:05:04

标签: php smtp email

我尝试使用谷歌搜索但遗憾的是我只获得了文档(或者我使用的是错误的关键字) 反正
我可以看到很多程序员(即使是那些我现在正在使用的程序员)似乎并不赞成使用php本机邮件功能并使用其他框架如sendmail?快速邮件等...

我想知道为什么?使用本机邮件功能真的有缺点吗? 如果是这样,邮件框架如何解决这个问题或者它们如何更好?

4 个答案:

答案 0 :(得分:5)

发送简单的纯文本电子邮件没有任何问题。

但是,一旦你进入多部分哑剧电子邮件(比如,你想要HTML版本或添加附件),那么你必须自己构建电子邮件,并且让所有标题和编码正确是非常棘手的。在这种情况下,最好使用库。

答案 1 :(得分:2)

function mail的PHP手册提到邮件功能有一些限制,其中之一是该功能打开并关闭每个电子邮件的SMTP套接字。当您只想发送一两封邮件时,邮件功能很有用。

答案 2 :(得分:1)

使用PHP的mail()函数需要在程序运行的主机上正确配置sendmail或等效函数。但是,Windows实现有点不同。如果您没有正确配置MTA,则无法从PHP脚本成功发送电子邮件。就像另一位评论者在这个帖子中所说的那样,PHP手册明确指出每次调用mail()函数都会打开和关闭套接字。这可能会导致脚本执行不必要的延迟。

此外,您的开发和测试环境可能没有公共静态IP地址。您的IP地址可能会被DNSBL,Gmail,Yahoo!列入黑名单。和其他流行的电子邮件服务提供商。

在这种情况下,最好的办法是使用正确配置的外部SMTP服务器。您的雇主可能已经提供了具有SMTP访问权限的电子邮件帐户。如果您没有,则可以使用Gmail帐户。 Gmail提供对所有电子邮件帐户的SMTP访问权限。

您可以编写脚本来打开与外部SMTP服务器的套接字连接。当有为此目的而经过试验和测试的开源库时,为什么要编写自己的?

顺便说一下,我昨天写了一篇关于同一主题的博文:Using SMTP With Zend Framework - Solve Email Delivery Problem

致以最诚挚的问候,

答案 3 :(得分:1)

就我而言,与主要安全问题相比,所有这些问题都很苍白: 邮件头注入:(http://en.wikipedia.org/wiki/E-mail_injection和php特定信息:http://www.damonkohler.com/2008/12/email-injection.html

因此,垃圾邮件发送者机器人会攻击您的网站,并且在使用非常不安全的mail()函数时发现脚本中容易出现的漏洞,可以将您的服务器中的电子邮件发送到任意列表联系,基本上是你的脚本&服务器成为他们的垃圾邮件机器中的一个cog。

我建议永远不要使用带有用户输入的mail(),一般来说,只需使用PEAR :: mail。 http://pear.php.net/package/Mail/

相关问题