Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I send mail from an iPhone application

I want to send an email from my iPhone application. I have heard that the iOS SDK doesn't have an email API. I don't want to use the following code because it will exit my application:

NSString *url = [NSString stringWithString: @"mailto:[email protected][email protected]&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!"]; [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]]; 

So how can I send an email from my app?

like image 642
Khushi Avatar asked Nov 22 '08 06:11

Khushi


People also ask

How does the Mail app work on iPhone?

The first time you open the Mail app, you'll need to connect it with an existing email address. Select your email provider, then follow the instructions to connect your account with the Mail app. When you're done, you'll be able to send and receive emails from that account on your iPhone.


2 Answers

On iOS 3.0 and later you should use the MFMailComposeViewController class, and the MFMailComposeViewControllerDelegate protocol, that is tucked away in the MessageUI framework.

First add the framework and import:

#import <MessageUI/MFMailComposeViewController.h> 

Then, to send a message:

MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init]; controller.mailComposeDelegate = self; [controller setSubject:@"My Subject"]; [controller setMessageBody:@"Hello there." isHTML:NO];  if (controller) [self presentModalViewController:controller animated:YES]; [controller release]; 

Then the user does the work and you get the delegate callback in time:

- (void)mailComposeController:(MFMailComposeViewController*)controller             didFinishWithResult:(MFMailComposeResult)result                          error:(NSError*)error; {   if (result == MFMailComposeResultSent) {     NSLog(@"It's away!");   }   [self dismissModalViewControllerAnimated:YES]; } 

Remember to check if the device is configured for sending email:

if ([MFMailComposeViewController canSendMail]) {   // Show the composer } else {   // Handle the error } 
like image 63
PeyloW Avatar answered Oct 05 '22 16:10

PeyloW


MFMailComposeViewController is the way to go after the release of iPhone OS 3.0 software. You can look at the sample code or the tutorial I wrote.

like image 24
Mugunth Avatar answered Oct 05 '22 15:10

Mugunth