You should use MFMailComposeViewController
, which was designed for sending emails from apps. Here is a code example of how you can use it:
#import "ViewController.h"
#import <MessageUI/MFMailComposeViewController.h>
@interface ViewController () <MFMailComposeViewControllerDelegate>
@end
@implementation ViewController
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self sendEmail];
}
- (void) sendEmail {
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController* mailController = [[MFMailComposeViewController alloc] init];
mailController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};
mailController.mailComposeDelegate = self;
[mailController setSubject:NSLocalizedString(@"Feedback", @"")];
[mailController setTitle:NSLocalizedString(@"Feedback", @"")];
[mailController setToRecipients:@[@"example@gmail.com"]];
[mailController setMessageBody:@"Hello & ampersand" isHTML:NO];
if (mailController) {
[self presentViewController:mailController animated:YES completion:nil];
}
}
else {
//show UIAlertView
}
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
//Handle completion
}
@end
There wouldn't be any issues with &
or '
Edit:
If you still want to use gmail app try the code below, it worked for me:
NSString *messageBodyRaw = @"Hi I want sell this application & want be free\n\n";
NSString *messageBody = [messageBodyRaw urlEncodeUsingEncoding:NSUTF8StringEncoding];
NSString *urlFinal = [NSString stringWithFormat: @"googlegmail:///co?subject=%@&body=%@", strSubject, messageBody];
NSURL *emailUrlFinal = [NSURL URLWithString:urlFinal];
[[UIApplication sharedApplication] openURL:emailUrlFinal];
NSString+URLEncoding.h:
#import <Foundation/Foundation.h>
@interface NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding;
@end
NSString+URLEncoding.m:
#import "NSString+URLEncoding.h"
@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
CFStringConvertNSStringEncodingToEncoding(encoding)));
}
@end