我正在iphone中开发一个应用程序,可以通过电子邮件发送报告。 使用MFMailComposeViewController框架实现了它。有没有方法来检查电子邮件是否有效。我只想将repors发送到一个有效的邮件地址。而且我想检查邮件的状态是否成功发送?检查电子邮件是否有效
回答
MFMailComposerViewController没有任何条款从它获取电子邮件地址。您可以通过setToRecipients:方法进行设置。但是你无法访问用户在地址栏中实际键入的内容。
而且,该消息将在邮件应用程序的发件箱被实际上排队。该文件明确指出,它不能提供任何方式让您知道邮件是否实际发送。另一件事是,如果你允许用户邮寄某些邮件地址,那么他的责任是输入一个正确的邮件地址。否则,他不会收到邮件。它取决于他。为什么你甚至在意?
一个非正式的方式:看来this post显示一个未公开的方式通过邮件作曲家的子视图递归循环以访问电子邮件文本字段。此方法可能会导致您的应用程序被Apple拒绝,或者如果Apple更改了MFMailComposeViewController的实现,可能会在将来停止工作。
感谢您的信息。有没有其他框架可以用来克服它?它会被苹果接受吗? – Tinku
是的。似乎有一种无证的方式。看到我更新的答案。请注意风险;-) – EmptyStack
我只是用这个代码:
-(BOOL) validEmail:(NSString *)email {
//Based on the string below
//NSString *[email protected]”\\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 = @" [email protected]#$^&*()={}[]|;’:\"<>,?/`";
//filter for domain
NSString *unWantedInDomain = @" [email protected]#$%^&*()={}[]|;’:\"<>,+?/`";
//filter for subdomain
NSString *unWantedInSub = @" `[email protected]#$%^&*()={}[]:\";’<>,?/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;
}
请注意,当ICANN允许[新的顶级域名](http://www.icann.org/en/topics/new-gtld-program)时,此功能不会受到未来的限制热媒)。 – darvids0n
使用此方法来检查电子邮件文本的有效性......
- (BOOL)validateEmail:(NSString *)emailStr {
NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:emailStr]; }
- 1. 检查输入电子邮件是否是有效的公司电子邮件
- 2. 检查电子邮件是否有效? (如果有@和)
- 3. 如何检查电子邮件地址是否有效?
- 4. Android检查电子邮件地址是否有效?
- 5. 我们如何检查电子邮件地址是否有效?
- 6. 检查电子邮件是否有效并存在
- 7. 使用Pregmatch错误检查电子邮件是否有效?
- 8. Angular 2检查电子邮件是否有效
- 9. 如何检查电子邮件帐户是否有效?
- 10. 如何检查电子邮件是否为有效格式?
- 11. 检查电子邮件是否有效并存在
- 12. 如何检查电子邮件是否有效?
- 13. Cakephp检查smtp电子邮件是否有效
- 14. 检查电子邮件在Google Apps脚本中是否有效
- 15. jQuery的有效电子邮件检查
- 16. 检查表单是否有检查和有效的电子邮件不工作
- 17. 检查电子邮件是否存在
- 18. 检查电子邮件是否启用?
- 19. 检查新收到的电子邮件是否有附件
- 20. php imap检查电子邮件是否有附件
- 21. 检查电子邮件地址是有效的System.Net.Mail.MailAddress
- 22. CakePHP电子邮件组件检查是否发送电子邮件
- 23. 查看电子邮件DNS是否有效
- 24. 如何查看电子邮件地址是否有效?
- 25. 电子邮件邮件是否链接有效的URL?
- 26. 如何检查输入的电子邮件是否为电子邮件格式
- 27. 检查电子邮件是否有效或Symfony 3.2中已经存在
- 28. 如何检查电子邮件地址是否有效Lync用户?
- 29. 错误检查电子邮件ID是否有效使用Mail :: CheckUser
- 30. 检查一个电子邮件地址是否作为Google帐户有效
请参阅这篇文章。 http://stackoverflow.com/questions/800123/best-practices-for-validating-email-address-in-objective-c-on-ios-2-0 – 2011-07-17 06:22:53