我是php编码新手,对网络不太了解(我2周前开始),所以请耐心等待。
最近我遇到了mail()
函数。首先,我只是在php.ini
文件中使用mail()
编写了简单代码而没有任何修改,自然它没有用。所以我用Google搜索了原因;我发现对于[mail函数]中的linux,我们必须输入sendmail_path
smtp服务器名称。我在yahoo.com有一个帐户,所以我输入smtp.mail.yahoo.com
,但这似乎不起作用。所以我再次搜索,然后才知道你的ISP需要smtp服务器。我的程序是一个简单的测试程序,我很乐意在php的代码中看到收件箱收件箱中的邮件。
也不是apache服务器(我用来响应php代码)有smtp支持吗?什么阻止消息传递?如果您觉得我需要阅读,请通过链接帮助我。
yahoo的/ gmail的smtp与我的isp的smtp有区别,还是我的isp的smtp与yahoo的smtp通信发送邮件(因为虽然我们的isp更改但我们继续使用相同的yahoo帐户发送邮件)?
答案 0 :(得分:2)
您应该与ISP联系以获取SMTP服务器名称和凭据。许多SMTP服务器在发送邮件之前需要有效的登录凭据,以避免垃圾邮件发送者未经授权使用。
Apache可以与邮件服务器(如Sendmail)进行交互,但没有内置支持。
有关安装自己的SMTP服务器的信息,请参阅Sendmail website,或使用为您的操作系统或发行版提供的软件包进行安装。
答案 1 :(得分:2)
您误读了这些信息。 sendmail_path指令不期望服务器名称,它期望sendmail二进制文件的路径。在Linux下,您不能使用具有普通mail()
功能的外部SMTP服务器。
Apache是一个Web服务器。如果提供HTTP但不提供任何其他服务(例如SMTP或FTP)。也许您对Microsoft IIS感到困惑。
我不确定这个问题但是,现在几乎没有人允许使用他的SMTP服务器发送第三方邮件。如果您想以@yahoo.com
发送电子邮件,则必须使用Yahoo的SMTP服务器。
一些额外的提示:
Linux服务器通常安装了本地MTA(邮件传输代理),因此您无需处理外部SMTP服务。目前尚不清楚您是否在触摸任何内容之前尝试发送电子邮件。
如果您想通过Yahoo或Gmail或类似的服务发送电子邮件,您最好使用一些第三方PHP库,如PEAR :: Mail,PHPMailer或Swift Mailer。 PHP本身不支持电子邮件身份验证。