我似乎无法让我的 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 文件中的哪些?
你做了取消注释sendmail_from的php.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(密码)认证,以排除这一可能性。
现在我的问题有了答案......
我使用 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)
| 归档时间: |
|
| 查看次数: |
2349 次 |
| 最近记录: |