views:

1918

answers:

2

I want to be able to use the iPhones Mail.app inside my application so my users can send a share email without leaving the application. I know 3.0 made this possible.

I have added the framework properly by ctrl clicking on my frameworks folder -> add existing framework.

Added this to the header file of the viewcontroller I want the Mail.app to appear in.

#import <MessageUI/MessageUI.h>

I pop up a UIAlert and on closing I call the function below, There are no errors showing up in my code. Do I have to do something extra inside the Interface Builder? Error Msg is Below

-(void)showEmailModalView {

    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self; // <- very important step if you want feedbacks on what the user did with your email sheet
    NSString * emailSubject = [[NSString alloc] initWithFormat:@"iPhone Subject Test"];
    [picker setSubject:emailSubject];


    NSString * content = [[NSString alloc] initWithFormat:@"iPhone Email Content"];

    // Fill out the email body text
    NSString *pageLink = @"http://mugunthkumar.com/mygreatapp"; // replace it with yours
    NSString *iTunesLink = @"http://link-to-mygreatapp"; // replate it with yours
    NSString *emailBody =
    [NSString stringWithFormat:@"%@\n\n<h3>Sent from <a href = '%@'>MyGreatApp</a> on iPhone. <a href = '%@'>Download</a> yours from AppStore now!</h3>", content, pageLink, iTunesLink];

    [picker setMessageBody:emailBody isHTML:YES]; // depends. Mostly YES, unless you want to send it as plain text (boring)

    picker.navigationBar.barStyle = UIBarStyleBlack; // choose your style, unfortunately, Translucent colors behave quirky.

    [self presentModalViewController:picker animated:YES];
    [picker release];
    [content release];
    [emailSubject release];


}

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    [self dismissModalViewControllerAnimated:YES];
}

My ERROR MESSAGE:

 ld: framework not found Message
 collect2: ld returned 1 exit status

I followed this tutorial: http://blog.mugunthkumar.com/coding/iphone-tutorial-in-app-email/

A: 

The linker command line output will tell you a lot about what XCode is using to try and build your binary, including Framework include paths and the frameworks the linker is including in the build. From there you'll be able to see exactly what XCode is using and what might be missing from your settings. The command line output can be found in one of the output panes in the Build Results window.

fbrereto
+2  A: 

After doing some research I found out that the tutorial I was using was perfectly fine! The code had no errors and my problem was the way I added the MessageUI Framework to my project.

Wrong Way. Ctrl-click on the frameworks folder and select add -> existing frameworks..

Correct Way. Open up "targets" in the file panel on the left of your xcode screen, double click your project name. A new window will pop open, at the bottom of the new window you can add a new linked library, add one by clicking the little plus sign in the bottom left hand corner. Scroll down to MessageUI and select Add.

If you had already added the MessageUI Framework the wrong way, just simply delete it and proceed with the correct way. If it still doesn't work try shutting down xcode, restarting, and rebuilding your application.

After many hours of searching for an answer this is what worked for me.

bbullis21