Iphone 检查电子邮件是否有效
我正在iphone上开发一个应用程序,可以通过电子邮件发送报告。 我们已经使用MFMailComposeViewController框架实现了它。是否有方法检查电子邮件是否有效。我只想将报告发送到有效的邮件地址。我还想检查邮件的状态是否成功发送?MFMailComposer ViewController没有任何从中获取电子邮件地址的设置。您可以通过setToRecipients:方法进行设置。但您无法访问用户在地址字段中实际键入的内容 而且,邮件实际上将在邮件应用程序的发件箱中排队。文件明确指出,它没有提供任何方式让你知道邮件是否真的被发送了 另一件事是,如果您允许用户将某个邮件发送到某个邮件地址,那么他有责任输入正确的邮件地址。如果没有,他就不会收到邮件。由他决定。你为什么这么在乎 一种未记录的方式:它似乎显示了一种通过递归循环邮件编写器的子视图来访问电子邮件文本字段的未记录方式。此方法可能导致您的应用被苹果拒绝,或者如果苹果更改MFMailComposeViewController的实现,此方法可能在将来停止工作 参考:。我只使用以下代码:Iphone 检查电子邮件是否有效,iphone,objective-c,ios,email,mfmailcomposeviewcontroller,Iphone,Objective C,Ios,Email,Mfmailcomposeviewcontroller,我正在iphone上开发一个应用程序,可以通过电子邮件发送报告。 我们已经使用MFMailComposeViewController框架实现了它。是否有方法检查电子邮件是否有效。我只想将报告发送到有效的邮件地址。我还想检查邮件的状态是否成功发送?MFMailComposer ViewController没有任何从中获取电子邮件地址的设置。您可以通过setToRecipients:方法进行设置。但您无法访问用户在地址字段中实际键入的内容 而且,邮件实际上将在邮件应用程序的发件箱中排队。文件明确指出
-(BOOL) validEmail:(NSString *)email {
//Based on the string below
//NSString *strEmailMatchstring=@”\\b([a-zA-Z0-9%_.+\\-]+)@([a-zA-Z0-9.\\-]+?\\.[a-zA-Z]{2,6})\\b”;
//Quick return if @ Or . not in the string
if([email rangeOfString:@"@"].location==NSNotFound || [email rangeOfString:@"."].location==NSNotFound)
return NO;
//Break email address into its components
NSString *accountName=[email substringToIndex: [email rangeOfString:@"@"].location];
email=[email substringFromIndex:[email rangeOfString:@"@"].location+1];
//’.’ not present in substring
if([email rangeOfString:@"."].location==NSNotFound)
return NO;
NSString *domainName=[email substringToIndex:[email rangeOfString:@"."].location];
NSString *subDomain=[email substringFromIndex:[email rangeOfString:@"."].location+1];
//username, domainname and subdomain name should not contain the following charters below
//filter for user name
NSString *unWantedInUName = @" ~!@#$^&*()={}[]|;’:\"<>,?/`";
//filter for domain
NSString *unWantedInDomain = @" ~!@#$%^&*()={}[]|;’:\"<>,+?/`";
//filter for subdomain
NSString *unWantedInSub = @" `~!@#$%^&*()={}[]:\";’<>,?/1234567890";
//subdomain should not be less that 2 and not greater 6
if(!(subDomain.length>=2 && subDomain.length<=6)) return NO;
if([accountName isEqualToString:@""] || [accountName rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:unWantedInUName]].location!=NSNotFound || [domainName isEqualToString:@""] || [domainName rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:unWantedInDomain]].location!=NSNotFound || [subDomain isEqualToString:@""] || [subDomain rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:unWantedInSub]].location!=NSNotFound)
return NO;
return YES;
}
-(BOOL)validEmail:(NSString*)电子邮件{
//基于下面的字符串
//NSString*strEmailMatchstring=@“\\b([a-zA-Z0-9%.+\-]+)@([a-zA-Z0-9.\-]+?\.[a-zA-Z]{2,6})\\b”;
//如果@或.不在字符串中,则快速返回
如果([email rangeOfString:@“@”].location==NSNotFound | |[email rangeOfString:@.”).location==NSNotFound)
返回否;
//将电子邮件地址分解为其组件
NSString*accountName=[电子邮件子字符串到索引:[电子邮件范围字符串:@“@”]。位置];
电子邮件=[email substringFromIndex:[email rangeOfString:@“@”]。位置+1];
//子字符串中不存在“.”
如果([email rangeOfString:@“)。位置==NSNotFound)
返回否;
NSString*domainName=[email substringToIndex:[email rangeOfString:@.”。位置];
NSString*子域=[email substringFromIndex:[email rangeOfString:@.”。位置+1];
//用户名、域名和子域名不应包含以下章程
//筛选用户名
NSString*unWantedInUName=@“~!@$^&*()={}[]}':\”,?/`”;
//域过滤器
NSString*unWantedInDomain=@“~!@$%^&*()={}[]\':\”,+?/`”;
//子域滤波器
NSString*unWantedInSub=@“`~!@$%^&*()={}[]:\“;”,?/1234567890”;
//子域不应小于2且不应大于6
如果(!(subDomain.length>=2&&subDomain.length使用此方法检查电子邮件文本的有效性
- (BOOL)validateEmail:(NSString *)emailStr {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:emailStr]; }
请参阅本文。感谢您提供的信息。是否有其他框架可以用来克服它?苹果会接受它吗?是的。似乎有一种未记录的方式。请参阅我的最新答案。也要小心风险;-)请注意,当ICANN允许时,此功能不会在未来得到验证。