我似乎无法使用我的php脚本发送电子邮件。
<?php
echo "Does this page work?";
mail('my email address', 'test subject', 'test message');
?>
首先,我在php.ini文件中设置了邮件功能设置,如下所示:
我在outlook上查看了我的电子邮件帐户设置。它不需要身份验证,其端口为25,其加密连接类型为“自动”。鉴于此,我相应地配置了我的php.ini文件:
SMTP = ssl://smtp1.iis.com
smtp_port = 25
然后我设置:
sendmail_from = my email address
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
我已经明确设置了sendmail_from,所以我不知道还能做什么。我还尝试从php.ini文件中的SMTP设置中删除'ssl://'部分,并配置php5.ini文件。我应该配置哪些.ini文件呢?
答案 0 :(得分:4)
您在sendmail_from
中取消注释php.ini
,是吗?它应该是这样的:
; For Win32 only.
sendmail_from = me@example.com
不喜欢这样:
; For Win32 only.
;sendmail_from = me@example.com
PHP说它未设置的唯一原因是,如果没有设置它。
修改强>
我能想到的唯一另一个问题(针对该警告)是您可能正在编辑错误的php.ini文件。如果它实际上是 set ,那么PHP不应该发出该警告。我相信您平台上的默认PHP配置是\xampp\php\php.ini
<强> EDIT2 强>
您的SMTP主机可能正在使用名为pop-before-smtp
的内容。尝试使用 使用SMTP(密码)身份验证的其他邮件提供商来排除这种情况。
答案 1 :(得分:2)
要回答有关'我应该配置哪些.ini文件'的问题,您可以运行phpinfo()来查看服务器的配置。这将列出所有配置文件的路径。
答案 2 :(得分:1)
sendmail_from = email@address.my
注意:应该是a =
答案 3 :(得分: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
答案 4 :(得分:0)
如果故意拼写错误,我不想指出一些非常明显的东西,但在你的SMTP系列中,不应该是ssl:// smtp 1.iis.com?
答案 5 :(得分:0)
您需要为mail()函数传递“From”标题。我相信sendmail_from
设置仅适用于Windows环境。试试这个:
<?php
mail('email@example.com', 'Subject', 'Message', array('From' => 'me@example.com'));
?>