我正在开发一个iPhone应用程序,我需要用户在登录时提供他的电子邮件地址。
检查电子邮件地址是否有效的域名的最佳方式是什么?
答案 0 :(得分:3)
如果它对您非常重要,那么您可以尝试通过DNS查找指定域的MX记录。
请参阅this answer获取(Linux)C代码。
答案 1 :(得分:2)
以下是我用于电子邮件验证的内容。
NSString *emailRegex = @"^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
if (![emailTest evaluateWithObject:emailTF.text]) {
// wrong email
} else {
// right email...
}
如果您想检查域名,请转到下方。
NSPredicate *websitePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^[A-Za-z0-9]+(.[A-Za-z0-9-:;\?#_]+)+"];
if ([websitePredicate evaluateWithObject:@"google.com"]) {
NSLog(@"valid domain");
} else {
NSLog(@"not valid domain");
}
我希望你正在寻找这个...
如果您正在寻找域名的实际验证(而不是域名格式),那么您应该follow @trojanfoe answer
答案 2 :(得分:2)
查看电子邮件地址: -
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
if( [emailTest evaluateWithObject:email]){
//Valid email
}else{
//Wrong Email id
}
我们可以检查域名,但我们不能说这是有效的,因为域名不是固定的 例如: - 1)abc@abc.com
2)abc@gmail.com
3)abc@yahoo.com
4)abc@abc.in
我们可以检查特定域名,因为电子邮件地址包含“gmail.com”或“yahoo.com”
由于域名格式无法修复,因此无法修复。
可能是这样的: -
1)aaa@aaa-a.com
2)aaa@aaa.co.in
3)aaa@hotmail.com
4)aaa@facebook.com
答案 3 :(得分:0)
正如@trojanfoe建议的那样,使用MX记录查找,您可以检查输入的域是否是邮件服务器。 Here is MX记录查找的客观c版本,您需要使用DNSServiceRef
服务类型初始化kDNSServiceType_MX
。
另一个检查用户是否提供有效电子邮件地址的最可靠选项是向输入的电子邮件地址发送带有确认码的电子邮件。
祝你好运!