我想开发申请以获取电子邮件地址,我需要向该电子邮件ID发送确认,之后我需要检查输入的电子邮件ID是否有效。有没有可能使用php或jsp检查?
答案 0 :(得分:4)
如果通过验证您的意思是检查字符串是否可以是电子邮件地址,您可以使用此php行
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
然后如果变量不为空,则电子邮件地址有效(检查http://php.net/filter_var)
如果通过验证您的意思是检查它是否存在 - 您不能
答案 1 :(得分:2)
你不明白这件事。
不要重新发明轮子,不要听那些从未使用过他们在这里兜售的工具的当地“理论家”。
发送确认电子邮件是判断此类帐户是否存在的唯一可靠方式。
答案 2 :(得分:0)
function validEmail($email)
{
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
{
$isValid = false;
}
else
{
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64)
{
// local part length exceeded
$isValid = false;
}
else if ($domainLen < 1 || $domainLen > 255)
{
// domain part length exceeded
$isValid = false;
}
else if ($local[0] == '.' || $local[$localLen-1] == '.')
{
// local part starts or ends with '.'
$isValid = false;
}
else if (preg_match('/\\.\\./', $local))
{
// local part has two consecutive dots
$isValid = false;
}
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
{
// character not valid in domain part
$isValid = false;
}
else if (preg_match('/\\.\\./', $domain))
{
// domain part has two consecutive dots
$isValid = false;
}
else if
(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
str_replace("\\\\","",$local)))
{
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\\\"|[^"])+"$/',
str_replace("\\\\","",$local)))
{
$isValid = false;
}
}
if ($isValid && !(checkdnsrr($domain,"MX") ||
↪checkdnsrr($domain,"A")))
{
// domain not found in DNS
$isValid = false;
}
}
return $isValid;
}
答案 3 :(得分:0)
没有理由重新发明轮子,Zend Framework提供了一个电子邮件验证库,请查看docs以获取更多信息。
看起来你可以这样做:
// Under EmailAddress section of docs
$validator = new Zend_Validate_EmailAddress();
if ($validator->isValid($email)) {
// email appears to be valid
} else {
// email is invalid; print the reasons
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
答案 4 :(得分:-1)
使用PHP
检查SMTP上是否存在邮件http://www.webdigi.co.uk/blog/wp-content/uploads/2009/01/smtpvalidateclassphp.txt
示例
<?php
// the email to validate
$email = 'joe@gmail.com';
// an optional sender
$sender = 'user@example.com';
// instantiate the class
$SMTP_Valid = new SMTP_validateEmail();
// do the validation
$result = $SMTP_Valid->validate($email, $sender);
// view results
var_dump($result);
echo $email.' is '.($result ? 'valid' : 'invalid')."\n";
// send email?
if ($result) {
//mail(...);
}
?>