tel*_*per 47 php email bouncedemail email-verification
是否可以检查是否存在类似于本网站的电子邮件?
<?php
if($_POST['email'] != ''){
// The email to validate
$email = $_POST['email'];
// An optional sender
function domain_exists($email, $record = 'MX'){
list($user, $domain) = explode('@', $email);
return checkdnsrr($domain, $record);
}
if(domain_exists($email)) {
echo('This MX records exists; I will accept this email as valid.');
}
else {
echo('No MX record exists; Invalid email.');
}
}
?>
<form method="POST">
<input type="text" name="email">
<input type="submit" value="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
这就是我现在所拥有的.它会检查域是否存在,但无法检查该域上是否存在用户的电子邮件.是否可以使用PHP来做到这一点?
Moh*_*deh 41
你应该检查SMTP.
这意味着您必须连接到该电子邮件的SMTP服务器.
连接到SMTP服务器后,您应该发送以下命令:
HELO somehostname.com
MAIL FROM: <no-reply@gmail.com>
RCPT TO: <emailtovalidate@domain.com>
Run Code Online (Sandbox Code Playgroud)
如果您收到"<emailtovalidate@domain.com>拒绝接力",则表示此电子邮件无效.
有一个简单的PHP类.你可以用它:
http://www.phpclasses.org/package/6650-PHP-Check-if-an-e-mail-is-valid-using-SMTP.html
Mac*_*ity 35
如果没有向该帐户发送电子邮件,您无法验证电子邮件是否确实存在.但你可以验证它至少格式化为一个
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
//Email is valid
}
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以添加另一个检查.解析域,然后运行checkdnsrr
if(checkdnsrr($domain)) {
// Domain at least has an MX record, necessary to receive email
}
Run Code Online (Sandbox Code Playgroud)
由于人们不断低估这一点,如果您受到约束并决定验证电子邮件,请注意以下注意事项:
垃圾邮件发送者也会做连接技巧,所以不要假设所有服务器都会以相同的方式响应.另一个答案链接到这个有这个警告的库
某些邮件服务器将默默拒绝测试邮件,以防止垃圾邮件发送者检查其用户的电子邮件并过滤有效的电子邮件,因此此功能可能无法与所有邮件服务器一起正常工作.
因此,如果地址无效,您可能无法获得无效的地址响应.最热门的答案没有提到这一点.
垃圾邮件列表.是的,你可以尝试这样做被列入黑名单(记得我说垃圾邮件发送者也知道这些技巧).他们按IP地址列入黑名单,如果您的服务器不断进行验证连接,则可能会在Spamhaus或其他阻止列表中清盘.如果您被列入黑名单,那么验证电子邮件地址有什么用呢?
如果验证电子邮件地址非常重要,则接受的方法是强制用户回复电子邮件.向他们发送完整的电子邮件,其中包含他们必须单击以进行验证的链接.这不是垃圾邮件,你仍然可以验证它是否有效.