我是 php 编码新手,对网络了解不多(我两周前开始),所以请耐心等待。
最近我遇到了
mail()
功能。首先,我只是使用mail()
编写了简单的代码如果没有对 php.ini 文件进行任何修改,自然是行不通的。于是我用谷歌搜索了原因;我发现对于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 帐户发送邮件) )?
最佳答案
您误读了信息。 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 本身不支持电子邮件身份验证。
关于PHP 邮件() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480149/