使用 TELNET 和 PHP 检查是不是存在电子邮件

Posted

技术标签:

【中文标题】使用 TELNET 和 PHP 检查是不是存在电子邮件【英文标题】:Check if a email exists with TELNET and PHP使用 TELNET 和 PHP 检查是否存在电子邮件 【发布时间】:2012-02-25 13:55:27 【问题描述】:

我在 *** 上看过一些关于如何检查电子邮件是否存在的教程,但我不太明白如何...

方法一

基本上我必须在 cmd.exe 中运行以下命令

telnet gmail-smtp-in.l.google.com 25
helo
mail from: <youremail@gmail.com>
rcpt to: <mailtocheck4@gmail.com>

如果回复是“OK”,那么我们就收到了一封很好的电子邮件。我将所有这些都插入到一个 .bat 文件中,而 bat 文件所做的只是连接到 telnet 并完成...

方法 2

使用这个 http://www.geckotribe.com/php-telnet/#usage 连接到telnet,但我不知道我应该提供什么密码

<?php
require_once "PHPTelnet.php";

$telnet = new PHPTelnet();

// if the first argument to Connect is blank,
// PHPTelnet will connect to the local host via 127.0.0.1
$result = $telnet->Connect('mail.gmail.com','usr','password');

if ($result == 0) 

    $telnet->DoCommand('helo', $result);
    // NOTE: $result may contain newlines
    echo $result;

    $telnet->DoCommand('another command', $result);
    echo $result;

    // say Disconnect(0); to break the connection without explicitly logging out
    $telnet->Disconnect();

?> 

你们能帮帮我吗?

【问题讨论】:

我怀疑这只适用于检查 gmail 帐户是否存在... 如果存在,你想检查什么?您想知道某个特定的电子邮件地址是否有效吗?或者想知道您是否可以通过特定帐户发送?或者是其他东西?无论哪种方式,我都怀疑您的两种方法中的任何一种都适用于 Gmail,我很确定它们需要 TLS 用于 SMTP... 我必须知道是否有用户向我提供了一个真实的电子邮件地址,而不是像 fake243241addres423432243@yahoo.com 这样的虚假电子邮件地址,从正则表达式的角度来看,女巫很好,但是...... 您找到解决方案了吗?我现在的情况和你一样。 【参考方案1】:

rcpt to 之后的 ok 确认不验证电子邮件是否存在。它仅表示您输入的电子邮件采用有效的电子邮件格式。只有不退回邮件,您才会知道该电子邮件是否不存在。

【讨论】:

我尝试了几封电子邮件,看来.bat确实检查了电子邮件的完整性 尝试使用不同的 smtp 服务器,我不确定基本 telnet 是否会因 smtp 服务器而异,但很有可能不会。在 Exchange 服务器上,默认情况下,它只允许在同一域内设置 rcpt to,因此如果没有则拒绝。尝试使用rcpt to 上的虚构电子邮件地址进行检查 即使在 gmail 的 Web 界面上,您也不受限于使用虚构的收件人电子邮件。无论如何它都会反弹,但协议接受它。

以上是关于使用 TELNET 和 PHP 检查是不是存在电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 检查 memcache 集群中是不是存在密钥

SMTP Telnet 和 PHP 没有从 HELO 得到任何响应

我可以使用 .net 检查电子邮件地址是不是存在吗?

检查数组中的所有值是不是都存在于数据库列中

使用 MySQLi 检查用户名是不是已存在

使用 React Hooks 和 Context 检查电子邮件是不是已经存在于 Firestore 的集合中