Xcode 4 / iOS - Send an email using SMTP from inside my app

后端 未结 4 1873
伪装坚强ぢ
伪装坚强ぢ 2020-11-30 01:21

I\'ve been looking around for a framework to simply allow me to send an email from inside my app. I have tried MailCore, Pantomime and SKPSMTP all with no luck. I can\'t get

相关标签:
4条回答
  • 2020-11-30 01:53

    SKPSMTPMessage still works fine for sending emails without the need for a UI .

    Make sure you add a reference to the CFNetwork.framework in your project. Otherwise you will get build errors.

    0 讨论(0)
  • 2020-11-30 01:54

    You can easily send emails from your iOS device. No need to implement SMTP and all. Best thing about using inbuilt emailing facilities in iOS is it gives you access to the address book! So it auto-completes names, email addresses. Yaaiiii!!

    Include, AddressBook,AddressBookUI and MessageUI frameworks and code something like this. Note you can even choose to send content as HTML too!

    #import <MessageUI/MessageUI.h>
    #import <AddressBook/AddressBook.h>
    #import <AddressBookUI/AddressBookUI.h>
    
    MFMailComposeViewController *mailComposer; 
    mailComposer  = [[MFMailComposeViewController alloc] init];
    mailComposer.mailComposeDelegate = self;
    [mailComposer setModalPresentationStyle:UIModalPresentationFormSheet];
    [mailComposer setSubject:@"your custom subject"];
    [mailComposer setMessageBody:@"your custom body content" isHTML:NO];
    [self presentModalViewController:mailComposer animated:YES];
    [mailComposer release];
    

    For the sake of completeness, I have to write this selector to dismiss the email window if the user presses cancel or send -

    - (void)mailComposeController:(MFMailComposeViewController*)controller 
              didFinishWithResult:(MFMailComposeResult)result
                            error:(NSError*)error 
    { 
        if(error) NSLog(@"ERROR - mailComposeController: %@", [error localizedDescription]);
        [self dismissModalViewControllerAnimated:YES];
        return;
    }
    

    Happy coding...

    0 讨论(0)
  • 2020-11-30 01:54

    I would imagine the Apple Approved way of doing this would be to send the data to a server via HTTP Post, and have the server generate the mail for you. I've seen others asking similar questions to this, and the answer is that if you send it from the device, you really need to prompt the user.

    I can even tell you why this is: Imagine an application that could send itself to everyone in your address book without the your confirmation, telling them that you just installed application X, and they should too. Even if well intentioned, this could quickly create a huge SMTP storm, and in essence this would be the "I love you" virus.

    That was enough of a strain on the public internet, but on wireless carriers, could quickly cause enough overload to block cel service.

    Conclusion: Either use the ComposeViewController as @Srikar suggests, or else POST the data to your server, and send it from there.

    0 讨论(0)
  • 2020-11-30 01:56

    It should be noted that MFMailComposeViewController has a method called canSendMail. If you don't check this before presenting a MFMailComposeViewController on a device that doesn't have an email account, you'll get a SIGABRT.

    It's easy to miss this when testing on the device or the simulator since you'll probably have an email account on your Mac and your iPad.

    0 讨论(0)
提交回复
热议问题