2011-12-12 141 views
2

我是php编程新手,对联网知之甚少(我从2周前开始),所以请耐心等待。php mail()函数

  1. 最近我遇到了mail()函数。首先,我只是使用mail()写了简单的代码,没有在php.ini文件中进行任何修改,但它自然不起作用。所以我搜索了这个事业。我发现,对于[邮件功能]中的linux,我们必须输入sendmail_path的smtp服务器名称。我在yahoo.com有一个帐户,所以我输入了smtp.mail.yahoo.com,但这似乎不起作用。所以我再次搜索了一下,并知道你的ISP的SMTP服务器是必需的。我的程序是一个简单的测试程序,我很想看到地址的收件箱中的邮件是由于php的代码。

  2. 也没有Apache服务器(这是我使用的回应PHP代码)具有SMTP支持?阻止它传递信息的是什么?如果您觉得我需要阅读,请通过链接帮助我。

  3. yahoo's/gmail的smtp和我的isp的smtp是否有区别,还是我的isp的smtp与yahoo的smtp通信发送邮件(因为尽管我们的isp更改了,但我们仍然使用相同的yahoo帐户发送邮件) ?

+0

PHP只需要一个SMTP服务器来发送邮件。不要紧,如果它是您的ISP或雅虎或谷歌(您的ISP与雅虎的SMTP服务器无关)。 'sendmail_path'应该设置为你服务器上的'sendmail'可执行文件(如果你不知道,请不要触摸它)。 –

回答

2
  1. 您误解了信息。 sendmail_path指令不指望服务器名称,它期望sendmail二进制文件的路径。在Linux下,不能使用外部SMTP服务器和普通的mail()函数。

  2. Apache是​​一个Web服务器。如果提供HTTP但不提供任何其他服务(如SMTP或FTP)。也许你对Microsoft IIS感到困惑。

  3. 不知道我明白这个问题,但现在,几乎没有人允许使用他的SMTP服务器发送第三方邮件。如果你想发送电子邮件为@yahoo.com,你将不得不使用雅虎的SMTP服务器。

一些额外提示:

  • Linux服务器通常有一个本地的MTA(邮件传输代理)安装,这样你就不必处理外部SMTP服务。目前尚不清楚您是否在触摸任何内容之前尝试发送电子邮件。

  • 如果您想通过Yahoo或Gmail或某些类似服务发送电子邮件,您最好使用一些第三方PHP库,如PEAR :: Mail,PHPMailer或Swift Mailer。 PHP本身不支持电子邮件身份验证。

+0

我确实尝试发送电子邮件没有任何修改,但无济于事 –

+0

它是喜欢从我的机器发送邮件我将不得不使用我的isp的smtp服务器,但从雅虎发送它我将不得不使用雅虎的smtp ...我可以通过代码访问雅虎的smtp服务器,如果我有一个帐户 –

+0

@SnuS - 如果你可以用Outlook或Thunderbird发送邮件(我不知道这是雅虎的情况),你可以用PHP发送邮件。 –

2

您应该联系您的ISP以获取您的SMTP服务器名称和凭证。许多SMTP服务器在发送消息之前需要有效的登录凭据以避免垃圾邮件发送者未经授权使用。

Apache可以与邮件服务器如Sendmail的互动,但没有内置支持。

请参阅Sendmail website有关安装自己的SMTP服务器,或安装使用为您的操作系统或分发的软件包。

+0

所以有没有办法(除了使用),其中我可以通过代码直接发送邮件...也见我的第三个问题,我刚刚添加 –

+0

这是正确的。您必须有权访问邮件服务器来处理您的电子邮件,并将其传递给预期的收件人。 –

+0

PLZ也看到我刚刚添加的第三个问题 –