Вот код:
Obj-C:
(Не забудьте добавить фреймворк messageUI в свой проект !!!)
Сначала импортируйте библиотеку сообщений:
#import <MessageUI/MessageUI.h>
Затем отметьте себя как делегата следующим образом:
@interface MYViewController () <MFMailComposeViewControllerDelegate>
Затем откройте композитор (если для пользователя настроена электронная почтаих устройство):
- (IBAction)emailButtonPressed:(id)sender
{
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *composeViewController = [[MFMailComposeViewController alloc] initWithNibName:nil bundle:nil];
[composeViewController setMailComposeDelegate:self];
[composeViewController setToRecipients:@[@"example@email.com"]];
[composeViewController setSubject:@"example subject"];
[self presentViewController:composeViewController animated:YES completion:nil];
}
}
Затем для обработки обратного вызова делегата и закрытия композитора:
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
//Add an alert in case of failure
[self dismissViewControllerAnimated:YES completion:nil];
}
SWIFT 3:
Импортироватьсоответствующая библиотека:
import MessageUI
Отметьте свой контроллер представления как делегата следующим образом:
class MyViewController: UIViewController, MFMailComposeViewControllerDelegate {
Подтвердите композитор (если пользователь настроил электронную почту на своем устройстве):
@IBAction func emailButtonAction(_ sender: UIButton) {
if MFMailComposeViewController.canSendMail() {
let mail = MFMailComposeViewController()
mail.mailComposeDelegate = self
mail.setToRecipients(["example@gmail.com"])
mail.setSubject("Example Subject")
mail.setMessageBody("<p>Test</p>", isHTML: true)
present(mail, animated: true)
}
}
Обработка обратного вызова делегата и отклонение составителя:
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true)
}