首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >fsockopen():无法连接,无法使用PHP (连接超时)

fsockopen():无法连接,无法使用PHP (连接超时)
EN

Stack Overflow用户
提问于 2018-07-22 21:38:26
回答 2查看 2.4K关注 0票数 8

我有这样的代码:

代码语言:javascript
复制
$domain = 'massag.com';

$hosts = array();
$mxweights = array();
getmxrr($domain, $hosts, $mxweights);

var_dump($hosts);
var_dump($mxweights);

$host = gethostbynamel($hosts[0])[0];
var_dump($host);

$f = @fsockopen($host, 25, $errno, $errstr, 10);

if(!$f) {
    var_dump('NOT CONNECTED');
}

它没有连接到smtp服务器,但当我使用命令时

smtp:217.196.209.9

mxtoolbox.com上,它是连接的。

我是不是在PHP代码上做错了什么?我已经尝试将$host替换为smtp.massag.com,但无济于事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-27 09:10:20

使用dig查询提供的IP或其反向DNS它显示没有MX记录,因此预计会出现错误。

代码语言:javascript
复制
dig -x 217.196.209.9 MX | grep 'IN.*MX'
;9.209.196.217.in-addr.arpa.    IN      MX

dig smtp.miramo.cz MX | grep 'IN.*MX'
;smtp.miramo.cz.                        IN      MX

但在massag.com上返回结果

代码语言:javascript
复制
dig massag.com MX | grep 'IN.*MX'
;massag.com.                    IN      MX
massag.com.             85375   IN      MX      20 miramo3.miramo.cz.
massag.com.             85375   IN      MX      10 smtp.miramo.cz.

最后,添加一些测试以避免不必要的错误并使用工作域

代码语言:javascript
复制
<?php
$domain = 'massag.com';

if(getmxrr($domain, $hosts, $mxweights)){
    print_r($hosts);
    print_r($mxweights);
    if(count($hosts) > 0){
        $host = gethostbynamel($hosts[0])[0];
        print("Found host: " . $host . "\n");

        $f = fsockopen($host, 25, $errno, $errstr, 10);

        if(!$f){
            var_dump('NOT CONNECTED');
        }
    }else{
        print("no MX record found\n");
    }
}
?>

使用tutorialspoint.com作为域的结果:

代码语言:javascript
复制
    Array
(
    [0] => ALT2.ASPMX.L.GOOGLE.com
    [1] => ASPMX.L.GOOGLE.com
    [2] => ALT1.ASPMX.L.GOOGLE.com
    [3] => ALT4.ASPMX.L.GOOGLE.com
    [4] => ALT3.ASPMX.L.GOOGLE.com
)
Array
(
    [0] => 5
    [1] => 1
    [2] => 5
    [3] => 10
    [4] => 10
)
Found host: 74.125.128.26

使用OP提供的域(massag.com)

代码语言:javascript
复制
    Array
(
    [0] => smtp.miramo.cz
    [1] => miramo3.miramo.cz
)
Array
(
    [0] => 10
    [1] => 20
)
Found host: 217.196.209.9
票数 1
EN

Stack Overflow用户

发布于 2018-09-09 05:41:50

我用socket_createsocket_connect替换了fsockopen函数,它好多了。函数fsockopen有时不能正确连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51465654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档