HI,
Here am using MFMailCompose to create mail and attach a screen shot with it.
Its very easy ,and also for this we have to import "#import <MessageUI/MessageUI.h>".
In ViewController.h File
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
@interface ViewController : UIViewController <MFMailComposeViewControllerDelegate>
@property (strong, nonatomic) IBOutlet UIWebView *webview;
- (IBAction)openMail:(id)sender;
@end
In ViewController.m file
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController ()
{
NSArray *paths;
NSString *filename,*newPath;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)takescreenshotes{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
filename=@"latest.png"; //create a custome file name for your screen shots
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
newPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:filename];
[data writeToFile:newPath atomically:YES]; //Path to store the screen shots
UIImageWriteToSavedPhotosAlbum([UIImage imageWithData:data], nil, nil, nil);
}
- (IBAction)openMail:(id)sender
{
[self takescreenshotes];
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setSubject:@"Email Subject"];
NSArray *toRecipients = [NSArray arrayWithObjects:@"fisrtMail@example.com", nil];
[mailer setToRecipients:toRecipients];
UIImage *myImage = [UIImage imageWithContentsOfFile:newPath];
NSData *imageData = UIImagePNGRepresentation(myImage);
[mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"mobiletutsImage"];
NSString *emailBody = @"Please check the attached image: Naveen";
[mailer setMessageBody:emailBody isHTML:NO];
// only for iPad
// mailer.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentModalViewController:mailer animated:YES];
//[mailer release];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"
message:@"Your device doesn't support the composer sheet"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
}
}
#pragma mark - MFMailComposeController delegate
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
switch (result)
{
case MFMailComposeResultCancelled:
NSLog(@"Mail cancelled: you cancelled the operation and no email message was queued");
break;
case MFMailComposeResultSaved:
NSLog(@"Mail saved: you saved the email message in the Drafts folder");
break;
case MFMailComposeResultSent:
NSLog(@"Mail send: the email message is queued in the outbox. It is ready to send the next time the user connects to email");
break;
case MFMailComposeResultFailed:
NSLog(@"Mail failed: the email message was nog saved or queued, possibly due to an error");
break;
default:
NSLog(@"Mail not sent");
break;
}
[self dismissModalViewControllerAnimated:YES];
}
@end
and the run time window looks like
You can download the code from here
Here am using MFMailCompose to create mail and attach a screen shot with it.
Its very easy ,and also for this we have to import "#import <MessageUI/MessageUI.h>".
In ViewController.h File
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
@interface ViewController : UIViewController <MFMailComposeViewControllerDelegate>
@property (strong, nonatomic) IBOutlet UIWebView *webview;
- (IBAction)openMail:(id)sender;
@end
In ViewController.m file
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController ()
{
NSArray *paths;
NSString *filename,*newPath;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)takescreenshotes{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
filename=@"latest.png"; //create a custome file name for your screen shots
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
newPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:filename];
[data writeToFile:newPath atomically:YES]; //Path to store the screen shots
UIImageWriteToSavedPhotosAlbum([UIImage imageWithData:data], nil, nil, nil);
}
- (IBAction)openMail:(id)sender
{
[self takescreenshotes];
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setSubject:@"Email Subject"];
NSArray *toRecipients = [NSArray arrayWithObjects:@"fisrtMail@example.com", nil];
[mailer setToRecipients:toRecipients];
UIImage *myImage = [UIImage imageWithContentsOfFile:newPath];
NSData *imageData = UIImagePNGRepresentation(myImage);
[mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"mobiletutsImage"];
NSString *emailBody = @"Please check the attached image: Naveen";
[mailer setMessageBody:emailBody isHTML:NO];
// only for iPad
// mailer.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentModalViewController:mailer animated:YES];
//[mailer release];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"
message:@"Your device doesn't support the composer sheet"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
}
}
#pragma mark - MFMailComposeController delegate
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
switch (result)
{
case MFMailComposeResultCancelled:
NSLog(@"Mail cancelled: you cancelled the operation and no email message was queued");
break;
case MFMailComposeResultSaved:
NSLog(@"Mail saved: you saved the email message in the Drafts folder");
break;
case MFMailComposeResultSent:
NSLog(@"Mail send: the email message is queued in the outbox. It is ready to send the next time the user connects to email");
break;
case MFMailComposeResultFailed:
NSLog(@"Mail failed: the email message was nog saved or queued, possibly due to an error");
break;
default:
NSLog(@"Mail not sent");
break;
}
[self dismissModalViewControllerAnimated:YES];
}
@end
and the run time window looks like
You can download the code from here
No comments:
Post a Comment