php执行telnet,无法使用PHP shell_exec()执行telnet命令

我正在尝试使用telnet和php进行邮件验证.整个过程在终端中说得很好,但是当我使用php shell_exec()时,它只运行到Telnet连接命令.连接telnet后,剩余的特定于telnet的命令将不再起作用.

有没有其他方法,我们需要使用PHP执行telnet?

更新:我正在尝试复制this教程.

这是我的代码

public function mailtest(Request $request){

//Taking input email

$email = $request->input("email");

$divide = explode("@", $email);

//Find out the Domain

$server = $divide[1];

$response = shell_exec("nslookup -q=mx $server");

//Response of the nslookup

print_r($response);

$mailServerList = explode(PHP_EOL, $response);

$line = $mailServerList[4];

$serverArr = preg_split('/\s+/', $line);

$n = sizeof($serverArr);

$mailServer = $serverArr[$n-1];

//Printing out the mail server out of the nslookup response

print_r($mailServer);

//Executing Telnet command

$telnet = shell_exec("telnet $mailServer 25");

print_r("telnet response ".$telnet);

//Telnet Helo

$helo = shell_exec("Helo testing.com");

print_r("Helo response ".$helo);

//Telnet mail from

$from = shell_exec('mail from: testing@gmail.com');

print_r("MAil from response ".$from);

//Telnet RCPT to

$finalResponse = shell_exec("rcpt to: $email");

print_r("Mail to response ".$finalResponse);

}

这是回应

Server: 10.0.80.11

Address: 10.0.80.11#53

Non-authoritative answer:

gmail.com mail exchanger = 5 gmail-smtp-in.l.google.com.

gmail.com mail exchanger = 10 alt1.gmail-smtp-in.l.google.com.

gmail.com mail exchanger = 40 alt4.gmail-smtp-in.l.google.com.

gmail.com mail exchanger = 30 alt3.gmail-smtp-in.l.google.com.

gmail.com mail exchanger = 20 alt2.gmail-smtp-in.l.google.com.

Authoritative answers can be found from:

gmail-smtp-in.l.google.com internet address = 173.194.64.27

gmail-smtp-in.l.google.com has AAAA address 2607:f8b0:4003:c02::1a

alt1.gmail-smtp-in.l.google.com internet address = 173.194.219.27

alt1.gmail-smtp-in.l.google.com has AAAA address 2607:f8b0:4002:c03::1b

alt4.gmail-smtp-in.l.google.com internet address = 64.233.190.26

alt4.gmail-smtp-in.l.google.com has AAAA address 2800:3f0:4003:c01::1b

alt3.gmail-smtp-in.l.google.com internet address = 74.125.141.26

alt3.gmail-smtp-in.l.google.com has AAAA address 2607:f8b0:400c:c06::1a

alt2.gmail-smtp-in.l.google.com internet address = 173.194.205.27

alt2.gmail-smtp-in.l.google.com has AAAA address 2607:f8b0:400d:c02::1b

gmail-smtp-in.l.google.com.telnet response Trying 2607:f8b0:4003:c02::1a...

Connected to gmail-smtp-in.l.google.com.

Escape character is '^]'.

Helo response

MAil from response No message, no subject; hope that's ok

Mail to response

解决方法:

shell_exec不适合(参见Ulrich的解释).

fsockopen应该做的伎俩.

$fp = @fsockopen('yourMailServer.com', 9001);

if ($fp) {

fwrite($fp, "username\n");

fwrite($fp, "password\n");

while ($line = fread($fp, 2048)) {

// do things with $line

}

} else {

//return error

}

标签:php,email-validation,networking,telnet,shell-exec

来源: https://codeday.me/bug/20190528/1168430.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值