2

我想让mail()PHP 在我的Windows Server 2012 R2. 为此,我首先SMTP按照这个页面安装。

让我感到困惑的一件事是Full-qualified domain name. WIN-RFELH8GM0KN是它默认建议的。我的服务器托管了几个网站,有人知道我应该在这里指定哪个网站吗?

因此,我没有改变这一点,因此,这mail www.google.com是一个错误吗?nslookupDNS 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我刚刚意识到在我关注的页面中,它在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)...

4

1 回答 1

0

我注意到的第一件事是 IIS 中的 SMTP 虚拟服务未处于启动状态,因此这会导致问题。测试前请确保此服务处于启动状态。

FQDN 名称主要用于通过端口 25 连接到服务器时向发件人显示的 SMTP 横幅。

可能值得将 DNS 角色安装到您的服务器上,并创建一个引用虚假域(例如 test.com)的正向查找区域,并使用您的服务器 IP 在该区域内创建一个名为 SMTP 的记录。然后确保将您的服务器设置为使用 127.0.0.1 作为 DNS 提供程序,以便它可以在将响应委托给根提示/外部 dns 转发器之前检查记录。

您需要使用 Telnet 发出 SMTP 请求,以确认 SMTP 正在侦听端口 25。您可以使用 localhost ip 地址 (127.0.0.1) 执行此操作,如下所示:

  telnet 127.0.0.1 25
  helo test.com
  MAIL FROM: ****YOUR EMAIL ACCOUNT****
  RCPT TO: ****SENDERS ADDRESS****
  DATA

由于 SPF 记录仅允许某些 IP/主机名作为 google.com 发送,您可能不会收到从中继到 GMAIL 的电子邮件,但为了测试,您应该在输入数据后看到您的服务器收到邮件.

这是在您的服务器上使用 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 命令后按回车键。您现在进入电子邮件正文。出于测试目的,我们将忽略主题栏,而只是在正文中添加一些数据。

  This is a test email.

然后要完成电子邮件,您需要按回车键留下一个空白行,然后按句号,然后像这样再次返回。

    ***BLANK LINE****
    .
    ***Hit Return****

屏幕截图所有命令,但您可以将电子邮件清空,以便我可以看到输出。

于 2016-09-27T10:49:59.347 回答