【发布时间】:2017-02-01 22:15:03
【问题描述】:
我希望你今天一切顺利。
我正在一个现有的 PHP 站点上做一些工作(应该注意,我远非 PHP 专家),它的 Web 表单目前无法正常工作。此表单仅接受用户输入,将其转换为电子邮件并将该电子邮件发送到用户的办公室帐户。当他们切换到 Office 365 作为他们的电子邮件提供商时,它停止工作。该表单使用 PhpMailer 库来处理发送,因此我对其进行了修改以使用 Office 365 设置here。当它发送时,我收到以下错误:
2017-02-01 21:50:17 Connection: opening to smtp.office365.com:2525,
timeout=10, options=array ( ) 2017-02-01 21:50:28 Connection: Failed to
connect to server. Error number 2. "Error notice: stream_socket_client()
[function.stream-socket-client]: unable to connect to smtp.office365.com:587
(Connection timed out) 2017-02-01 21:50:28 SMTP ERROR: Failed to connect to
server: Connection timed out (110)
Message delivery failed...RFI1
由于它的设置方式,它直接输出到网页。这是我一直在输入的 PhpMailer 设置:
$mail = new PHPMailer(true);
$mail-> IsSMTP();
$mail->Host = "smtp.office365.com";
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'pass';
$mail->SMTPSecure = 'ssl';
$mail->Port = 587;
$mail->SMTPDebug = 2;
$mail->From = $from;
$mail->Mailer = "smtp";
$mail->FromName = 'Generic message';
我浏览了整个网络,看看我在这里可能做错了什么。托管该站点的 ISP 表示他们没有阻止任何内容,而 Microsoft 表示我没有正确配置 SSL。现在承认,我不是这个系统的专家,我没有直接访问服务器的权限,而且站点本身构建得很奇怪,我无法让它在本地服务器上正常运行。尽管如此,我还是很难想到连接超时可能是由 SSL 问题引起的。有没有人知道还有什么可能导致这个问题?
编辑:正如所指出的,错误消息中的端口与代码中的端口不匹配。我根据阅读的内容尝试了几个端口,并在不同的时间从每个端口中获取了文本。
【问题讨论】:
-
2525端口奇怪,好像没有使用你设置的端口
-
是的,那是我的错。我剪切并粘贴了之前的代码,然后尝试使用不同的端口号确定,并从该运行中获取错误。
-
从你的服务器运行
telnet smtp.office365.com 587看看你是否获得了连接 -
没有对服务器的 ssh 访问权限。有点半盲。
-
你有什么运气吗?