2011-12-26 2 views
0

Я работаю над iPhone eBook app.iphone: Как добавить функциональность электронной почты в iPhone Ebook App

В моих книгах приложения создаются с использованием HTML. На странице Index.html я должен указать функции электронной почты, которые отправляют (отправляют) содержимое конкретной главы.

Теперь, используя webview, я показываю index.html и в этом я создал UIActionSheet, который покажет кнопку электронной почты.

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

+1

вы разрабатываете приложение с PhoneGap? – Maulik

ответ

5

Ниже код будет работать, даже если вы не настраивали электронную почту в вашем устройстве ...

Вот код:

- (IBAction) sendEmail:(id)sender 
{ 
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); 
if (mailClass != nil) 
{ 
    // We must always check whether the current device is configured for sending emails 
    if ([mailClass canSendMail]) 
    { 
     [self displayComposerSheet]; 
    } 
    else 
    { 
     [self launchMailAppOnDevice]; 
    } 
} 
else 
{ 
    [self launchMailAppOnDevice]; 
} 
} 

-(void)displayComposerSheet 
{ 
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
    picker.mailComposeDelegate = self; 

    [picker setSubject:@"Hello from DShah!"]; 

    NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
    NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
    NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

    [picker setToRecipients:toRecipients]; 
    [picker setCcRecipients:ccRecipients]; 
    [picker setBccRecipients:bccRecipients]; 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"userdata" ofType:@"abc"]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.abc", @"userdata"]]; 
    NSData *myData = [NSData dataWithContentsOfFile:fullPath]; 
    [picker addAttachmentData:myData mimeType:@"csv" fileName:@"userdata.abc"]; 

    NSString *emailBody = @"It is raining in sunny California!"; 
    [picker setMessageBody:emailBody isHTML:NO]; 

    [self presentModalViewController:picker animated:YES]; 
    [picker release]; 
} 

-(void)launchMailAppOnDevice 
{ 
    NSString *recipients = @"mailto:[email protected]&subject=Hello from DShah!"; 
    NSString *body = @"&body=It is cold in Winter!"; 

    NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body]; 
    email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]]; 
} 

Затем реализовать метод делегата, как показано ниже ....

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 
    switch (result) 
    { 
     case MFMailComposeResultCancelled: 
      message = @"Result: canceled"; 
      break; 
     case MFMailComposeResultSaved: 
      message = @"Result: saved"; 
      break; 
     case MFMailComposeResultSent: 
      message = @"Result: sent"; 
      break; 
     case MFMailComposeResultFailed: 
      message = @"Result: failed"; 
      break; 
     default: 
      message = @"Result: not sent"; 
      break; 
    } 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Email Demo" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
    [alert show]; 
    [alert release]; 

    [self dismissModalViewControllerAnimated:YES]; 
} 

Njoy кодирования ....: D