This question already has answers here:
Shortcuts in Objective-C to concatenate NSStrings
(30 answers)
Closed 7 years ago.
- (IBAction)sendButton:(id)sender {
NSString *locationFormatter = [NSString stringWithFormat:#"https://maps.google.com?saddr=Current+Location&daddr=%f,%f", self.locationManager.location.coordinate.latitude, self.locationManager.location.coordinate.longitude];
if ([MFMailComposeViewController canSendMail]){
MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc]init];
mailComposer.mailComposeDelegate = self;
[mailComposer setSubject:#"Google Maps Directions"];
[mailComposer setToRecipients:#[#"castro.michael87#gmail.com"]];
[mailComposer setMessageBody:#"Google Maps Url:locationFormatter" isHTML:NO];
// Display Mail Composer
[self presentViewController:mailComposer animated:YES completion:nil];
}
How do I insert the locationFormatter string in the MessageBody?
I was hoping this would work:
[mailComposer setMessageBody:#"%#",locationFormatter isHTML:NO];
Try:
[mailComposer setMessageBody:[NSString stringWithFormat:#"Google Maps Url:%#", locationFormatter] isHTML:NO];
Related
In my app, I have a tableView whose material is from my NSmutableDictionary. When I push a button, I want to send these material to a email.Here is the code for sending email:
//Below to send email
- (IBAction)showEmail:(id)sender {
// Email Subject
NSString *emailTitle = #"Course Planner of iBcChem";
// Email Content
NSString *messageBody = #"Please check my course plan";
// To address
NSArray *toRecipents = [NSArray arrayWithObject:#"xxxxx#gmail.com"];
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:NO];//want to fix here
[mc setToRecipients:toRecipents];
// Present mail view controller on screen
[self presentViewController:mc animated:YES completion:NULL];
}
Here is my question:
How can I add my material to the messageBody please? Can I use the method similar to show my dictionary like below in my messageBody please?
NSLog(#"Dictionary: %#", [_sectionContents description]);//test dictionary here
Where _sectionContents is my dictionary.
You can attach you dictionary by the same code which you have written.
Here is the code for you.
NSString *emailTitle = #"Course Planner of iBcChem";
NSString *messageBody = #"Please check my course plan";
NSDictionary *dci = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:#"1",#"2", nil] forKeys:[NSArray arrayWithObjects:#"A",#"B", nil]];
NSArray *toRecipents = [NSArray arrayWithObject:#"xxxxx#gmail.com"];
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:dci.description isHTML:NO];
[mc setToRecipients:toRecipents];
[self presentViewController:mc animated:YES completion:NULL];
In simulator mail delegate will take some time to load the Body part of mailcomposersheet. The body will look like.
{
A = 1;
B = 2;
}
Enjoy Coding !!
In my app, I have a button that when pressed, will present an MFMailComposeViewController that is pre-populated with a subject, message body, and a jpg. However, I am noticing some strange behavior. Often the MFMailComposeViewController appears with the message body and image attached, but other times, it will appear without the message body and image attachment, though the subject is always properly presented. I am running my app on iOS 8. My code is below. Any suggestions/advice will be much appreciated.
- (void)emailButtonPressed:(id)sender {
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:#"My Subject"];
[picker setMessageBody:[NSString stringWithFormat:#"My Message Body"] isHTML:YES];
NSData *imageData = UIImageJPEGRepresentation(self.image, 1.0);
NSString *fileName = #"myFileName";
fileName = [fileName stringByAppendingPathExtension:#"jpeg"];
[picker addAttachmentData:imageData mimeType:#"image/jpeg" fileName:fileName];
[self presentViewController:picker animated:YES completion:nil];
}
when i run this in Xcode 6 ... it appears and automatically dismissed after few seconds with below mentioned error and also i can't able to edit the textfield (To/BCC/Subject)..
Error : timed out waiting for fence barrier from com.apple.MailCompositionService.
My code........
MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
mailViewController.mailComposeDelegate = self;
[mailViewController setSubject:#"Mail"];
if(![share_link isEqualToString:#""])
{
[mailViewController setMessageBody:share_link isHTML:NO];
}
else
{
[mailViewController setMessageBody:#"http://www.google.com/" isHTML:NO];
}
return mailViewController;
I'm trying to send mail to list of email array that I receive from database, when I send the recipient list gets populated in iOS 7 but when I tried in iOS 5 the recipient list doesn't get populated. Any Idea why? This is my mail function
-(void)sendEmailToContacts:(NSArray *)fList withText:(NSString *)emailText withTag:(NSInteger )tag
{
if([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.view.tag=tag;
NSString *htmlBody =[NSString stringWithFormat:#"%#",_currentAdd.contentUrl,addtext];
[mailComposer setMessageBody:htmlBody isHTML:YES];
[mailComposer setSubject:_currentMail.subject];
mailComposer.mailComposeDelegate = self;
[mailComposer setToRecipients:fList];
[self presentViewController:mailComposer animated:YES completion:nil];
}
else
{
NSLog(#"Device is unable to send email in its current state.");
}
}
My fList (recipient list) is an NSArray, this is a sample output of my fList
(
"john#gmail.com",
"mary#gmail.com",
"akhil#gmail.com",
"tester#gmail.com"
)
Recipients are expected as immutable array. check your array type
NSArray *usersTo = [NSArray arrayWithObject: #"raja#apple.com"];
[mailComposer setToRecipients:usersTo];
Try this one.
NSArray *fList = [NSArray arrayWithObjects:#"raja#apple.com",#"john#gmail.com",#"mary#gmail.com",#"akhil#gmail.com",#"tester#gmail.com", nil];
MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.view.tag=tag;
NSString *htmlBody =[NSString stringWithFormat:#"%#",_currentAdd.contentUrl,addtext];
[mailComposer setMessageBody:htmlBody isHTML:YES];
mailComposer.mailComposeDelegate = self;
[mailComposer setSubject:_currentMail.subject];
mailComposer.delegate = self;
[mailComposer setToRecipients:fList];
[self presentViewController:mailComposer animated:YES completion:nil];
-(void)sendEmailToContacts:(NSArray *)fList withText:(NSString *)emailText withTag:(NSInteger )tag
{
if([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];
//mailComposer.view.tag=tag;
NSString *htmlBody =[NSString stringWithFormat:#"%#",_currentAdd.contentUrl,addtext];
[mailComposer setMessageBody:htmlBody isHTML:YES];
[mailComposer setSubject:_currentMail.subject];
mailComposer.mailComposeDelegate = self;
[mailComposer setToRecipients:fList];
[self presentViewController:mailComposer animated:YES completion:nil];
}
else
{
NSLog(#"Device is unable to send email in its current state.");
}
}
Apparently the issue was with setting tag if I try to set the tag before setToRecipients line it will not show the recipients list in iOS 5, it will work if the setting tag line is commented out or set after setToRecipients.
This is the code I'm using to present the in-app email:
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setSubject:#"Look at this Job I found!"];
NSString *emailBody = [NSString stringWithFormat:#"Look at this Job I found:\n%# (%#)\nSalary Rage: %#-%#\n Located in %#.\n%#\n%#.\n", _positionTitleLabel.text, _organizationNameLabel.text,_minSalaryLabel.text,_maxSalaryLabel.text,_locationLabel.text,_startDateLabel.text,jobsy.url];
[mailer setMessageBody:emailBody isHTML:NO];
[self presentViewController:mailer animated:YES completion:nil];
This is the result/issue: http://i.imgur.com/mwWzVxj.png