我想让mail()
中的Windows Server 2012 R2
PHP工作。为此,我首先按照this page安装SMTP
。
令我困惑的一件事是Full-qualified domain name
。 WIN-RFELH8GM0KN
是默认提出的。我的服务器托管了几个网站,有谁知道我应该在这里指定哪个网站?
我没有更改此内容,因此mail www.google.com
中的nslookup
会返回DNS request timed out.
所以这是错误吗?
原因是我的test.php
没有发送邮件:
<?php
mail('mymail@gmail.com', 'title', 'content');
?>
有人可以帮忙吗?
更新1 在@LittleAI的答案之后,我启动了SMTP,但DNS request timed out
仍在那里:
更新2 以下是php.ini
:
telnet localhost 25
返回以下内容:
更新3 这是一项测试,效果很好:我确实在softtitmur@gmail.com
的收件箱中收到了测试邮件。但是,如果我在Update 1
中重做测试,则仍然会DNS requested time out.
。 test.php
仍无法发送邮件......
更新4 我刚刚意识到在the page I followed中,mail.vsysad.com
下的nslookup
(我认为它是mail vsysad.com
,这就是为什么我试过mail www.google.com
没有意义。所以它也适用于我的服务器,并且没有DNS request timed out
。
然后,我仔细检查php.ini
,我意识到sendmail_from
没有被注释。所以我取消注释它并设置sendmail_from = softtimur@gmail.com
,因此,mail()
的php现在正常工作,所以问题解决了,但我仍然不理解FQDN及其默认值价值(即WIN-RFELH8GM0KN
)......
答案 0 :(得分:0)
我注意到的第一件事是IIS中的SMTP虚拟服务未处于启动状态,因此这会导致问题。在测试之前,请确保此服务处于启动状态。
FQDN名称主要用于通过端口25连接到服务器时将显示发件人的SMTP横幅。
可能值得在您的服务器上安装DNS角色,并创建一个引用假域(例如test.com)的正向查找区域,并使用您的服务器IP在此区域内创建一个名为SMTP的记录。确保将服务器设置为使用127.0.0.1作为DNS提供程序,以便在将响应委派给root提示/外部dns转发器之前检查记录。
您需要使用Telnet执行SMTP请求以确认SMTP正在侦听端口25.您可以使用localhost ip address(127.0.0.1)执行此操作,如下所示:
telnet 127.0.0.1 25
helo test.com
MAIL FROM: ****YOUR EMAIL ACCOUNT****
RCPT TO: ****SENDERS ADDRESS****
DATA
由于SPF记录,您可能不会收到从您的中转到GMAIL的电子邮件,该记录仅允许某些IP /主机名作为google.com发送,但是对于测试,您应该看到您的服务器在数据后收到邮件已输入。
以下是在服务器上使用telnet的指南。只需确保已安装telnet功能,因为默认情况下未安装此功能。
http://www.yuki-onna.co.uk/email/smtp.html
其他:
telnet localhost 25
在SMTP横幅之后键入以下命令,但请确保不要犯任何错误,否则您可能需要重新开始您的会议。
helo test.com
然后,您应该看到250响应,表示服务器正在侦听
以下类型:
MAIL FROM: test@test.com
应该回答OK。如果是,请输入:
RCPT TO: ***YOU EMAIL ADDRESS OF CHOICE****
再次,它应该回答OK。如果是,请键入以下内容:
DATA
在DATA命令后按Enter键。你现在进入了电子邮件的正文。出于测试目的,我们将错过主题栏并向主体添加一些数据。
This is a test email.
然后要完成电子邮件,您需要按回车键留空行,然后按句号停止,然后再返回。
***BLANK LINE****
.
***Hit Return****
截图所有命令,但您可以删除电子邮件,以便我可以看到输出。