Проверка адреса электронной почты для доменного имени

Я разрабатываю приложение для iPhone, в котором мне нужно, чтобы пользователь указал свой адрес электронной почты при входе в систему.

Как лучше всего проверить, является ли адрес электронной почты действительным доменным именем?


person Searching    schedule 03.02.2016    source источник
comment
domain name valid что ты имеешь в виду? вы просто хотите проверить, действительна ли электронная почта или нет?   -  person Fahim Parkar    schedule 03.02.2016
comment
А что, если пользователь вводит чужой адрес электронной почты? Тебя это устраивает?   -  person Fahri Azimov    schedule 03.02.2016
comment
Да @FahriAzimov. Скажите, пожалуйста, точное решение для действительного доменного имени или нет   -  person Searching    schedule 03.02.2016
comment
почему <br/>gmail.com действителен?   -  person Fahim Parkar    schedule 03.02.2016
comment
Действительный домен - gmail.com, недействительный домен - gmail.comm. Дайте точное решение @FahimParkar   -  person Searching    schedule 03.02.2016


Ответы (4)


Если это действительно важно для вас, вы можете попытаться найти MX-запись указанного домена через DNS.

См. этот ответ для кода C (Linux) для этого.

person trojanfoe    schedule 03.02.2016

Чтобы проверить адрес электронной почты: -

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) [email protected]

2) [email protected]

3) [email protected]

4) [email protected]

Мы можем проверить конкретное доменное имя, так как адрес электронной почты содержит "gmail.com" или "yahoo.com"

Это не исправить, потому что формат доменного имени не исправлен.

Это могло быть так: -

1) [email protected]

2) [email protected]

3) [email protected]

4) [email protected]

person Er.Shreyansh Shah    schedule 03.02.2016
comment
Это не отвечает на вопрос и даже дублирует ранее опубликованный ответ. Пожалуйста, уточните свой ответ. - person Fahri Azimov; 03.02.2016
comment
@FahriAzimov Вы можете не согласиться с этим, но не просите их удалить его. Если вы не согласны с их ответом, просто проголосуйте против и оставьте отзыв, но не просите их удалить его. Кроме того, это не дубликат другого ответа, это другой код, который подробно описывает их ответ, так что плохой комментарий. Прочтите некоторые из ваших других комментариев к другим ответам. Я не уверен, что вы сами полностью осведомлены о некоторых правилах. - person Popeye; 03.02.2016

Ниже я использую для проверки электронной почты.

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...
}

Редактировать 1

Если вы хотите проверить домен, перейдите по ссылке ниже.

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");
}

Надеюсь, вы это ищете ...


Редактировать 2

Если вы ищете фактическую проверку имени домена (а не формата домена), вам следует следовать @trojanfoe ответ

person Fahim Parkar    schedule 03.02.2016
comment
Это просто проверка правильности формирования текста, а не правильности доменного имени. - person trojanfoe; 03.02.2016
comment
Да Текст Проверяется только с использованием регулярного выражения. Мне нужна валидация действительного доменного имени - person Searching; 03.02.2016

Как предложил @trojanfoe, с помощью поиска записи MX вы можете проверить, является ли введенный домен почтовым сервером. Вот объективная c-версия поиска записи MX, вам нужно инициализировать DNSServiceRef с помощью kDNSServiceType_MX Тип Обслуживания.

Другой, наиболее надежный способ проверить, предоставил ли пользователь действительный адрес электронной почты, - это отправить электронное письмо с кодом подтверждения на введенный адрес электронной почты.

Удачи!

person Fahri Azimov    schedule 03.02.2016