为什么这个简短的 php 脚本不发送电子邮件?

Ror*_*ryG 5 php email smtp

我似乎无法让我的 php 脚本发送电子邮件。

<?php 
echo "Does this page work?";
mail('my email address', 'test subject', 'test message');
?>
Run Code Online (Sandbox Code Playgroud)

首先,我在php.ini文件中设置了邮件功能设置如下:

我在 Outlook 上检查了我的电子邮件帐户设置。它不需要身份验证,端口为 25,加密连接类型为“自动”。鉴于此,我相应地配置了我的 php.ini 文件:

SMTP = ssl://smtp1.iis.com
smtp_port = 25
Run Code Online (Sandbox Code Playgroud)

然后我设置:

sendmail_from = my email address
Run Code Online (Sandbox Code Playgroud)

echo 语句在浏览器中打印出来,所以我知道 php 文件被识别和处理。但是浏览器也显示如下错误:

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\xampp\htdocs\mailtest.php on line 3
Run Code Online (Sandbox Code Playgroud)

我已经明确设置了 sendmail_from 所以我不知道还能做什么。我还尝试从 php.ini 文件中的 SMTP 设置中删除“ssl://”部分,并配置 php5.ini 文件。无论如何我应该配置这些 .ini 文件中的哪些?

Tim*_*ost 5

你做了取消注释sendmail_fromphp.ini,是吗?它应该是这样的:

; For Win32 only.
sendmail_from = me@example.com
Run Code Online (Sandbox Code Playgroud)

不是这样的:

; For Win32 only.
;sendmail_from = me@example.com
Run Code Online (Sandbox Code Playgroud)

PHP 说它没有设置的唯一原因是,好吧,如果它没有设置。

编辑

我能想到的唯一其他问题(针对该警告)是您可能正在编辑错误的 php.ini 文件。如果它真的设置了,PHP 不应该发出那个警告。我相信您平台上的默认 PHP 配置是\xampp\php\php.ini

编辑2

您的 SMTP 主机可能正在使用名为pop-before-smtp. 试试这个使用其他邮件提供商使用SMTP(密码)认证,以排除这一可能性。


Ror*_*ryG 1

现在我的问题有了答案......

我使用 phpinfo() 来找出我应该编辑的 php.ini 文件。事实证明,我的服务器文件夹中有 3 个这样的文件。两个位于 PhP 文件夹下(分别名为 php.ini 和 php5.in),另一个位于 apache/bin 文件夹中。使用 phpinfo() 函数,我能够确定我正在编辑错误的 .ini 文件(我查看了我正在设置的参数,但它们没有更改)。一旦我编辑了正确的(apache/bin 中的),警告:mail() [function.mail]: "sendmail_from"...错误就停止发生。

然后,为了发送邮件,我编辑了正确的 .ini 文件,如我的问题中最初提出的:

SMTP = myoutgoingmail.com (the same setting as my mail program - outlook)
smtp_port = (the same as my mail program - oultook)

sendmail_from = myemailaddress.com
Run Code Online (Sandbox Code Playgroud)