如何验证PHP发送的电子邮件,而不是语法;但按地位

时间:2012-09-27 02:11:27

标签: php email verify

我确实在发送邮件之前验证了在文本框中输入的电子邮件地址,即语法。但是如何使用PHP验证或验证正确的电子邮件地址?

if(mail($emailto)) {
   echo("status=Sent");
}
else {
   echo("status=Failed");
}

例如,如果您输入xxxxxxxxaddfb54@yahoo.com,则它接受为有效的电子邮件ID!我们知道它是否存在?

3 个答案:

答案 0 :(得分:3)

你做不到。这就是互联网的本质:你不能绝对确定任何主机(更不用说主机上的账户)在任何时候都处于给定状态,除非你能控制主机。

您可以通过邮件程序守护程序的返回消息告知失败,具体说明传递尝试失败。但这是礼貌,大多数私人邮件不会延伸到你。

除非您专门设置服务器以表现出这种方式,否则在成功交付的情况下,您几乎不会收到回复验证电子邮件。

答案 1 :(得分:0)

用户在阅读时会告诉你:)

您不能如上所述,所以请务必提供“请重新发送电子邮件”链接,以便用户能够输入正确的电子邮件[如果他或她是错误的,或者只是在你的smtp服务器出现任何问题时再发送一次。

答案 2 :(得分:0)

无法判断是否存在电子邮件地址(除非您尝试联系的服务器具有某种API)。但是,您可以检查是否可以通过电子邮件发送到:

function checkEmailDomain($email) {
   list(,$domain) = explode('@', $email);
   if (checkdnsrr($domain, 'MX')) {
      return TRUE;
   }
   else if (checkdnsrr($domain, 'A')) {
      return TRUE;
   }
   return FALSE;
}

请注意,这也不是100%可靠的。如果你想使用它,那应该是纯粹的建议。