Написать письмо в приложении для iPhone - PullRequest
18 голосов
/ 19 мая 2011

В моем приложении есть страница о программе. Я хотел бы разместить круглую прямоугольную кнопку, чтобы при нажатии на нее я мог отправить письмо компании со встроенным адресом электронной почты.

Есть ли учебники для этого?

Заранее спасибо.

Ответы [ 4 ]

62 голосов
/ 09 июля 2013

Вот код:

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)
}
13 голосов
/ 19 мая 2011

Вы должны создать ссылку на MessageUI framework и использовать класс MFMailComposeViewController. Не забудьте импортировать фреймворк (#import <MessageUI/MessageUI.h>).

Документация с примером кода: http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html

4 голосов
/ 26 марта 2014

Вот код для открытия Mail Composer в iOS:

Источник: http://sickprogrammersarea.blogspot.in/2014/03/open-mail-composer-programmatically-in.html

#import "ViewController.h"
@interface ViewController ()

@end
@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
      // Do any additional setup after loading the view, typically from a nib.

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button addTarget:self action:@selector(send:) forControlEvents:UIControlEventTouchDown];
    [button setTitle:@"Send Mail" forState:UIControlStateNormal];
    button.frame = CGRectMake(100.0, 350.0, 100.0, 40.0);
    [self.view addSubview:button];

}
- (void) send:(id)sender{
    MFMailComposeViewController *comp=[[MFMailComposeViewController alloc]init];
    [comp setMailComposeDelegate:self];
    if([MFMailComposeViewController canSendMail])
    {
        [comp setToRecipients:[NSArray arrayWithObjects:@"imstkgp@gnail.com", nil]];
        [comp setSubject:@"From my app"];
        [comp setMessageBody:@"Hello bro" isHTML:NO];
        [comp setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
        [self presentViewController:comp animated:YES completion:nil];
    }
    else{
        UIAlertView *alrt=[[UIAlertView alloc]initWithTitle:@"" message:@"" delegate:nil cancelButtonTitle:@"" otherButtonTitles:nil, nil];
        [alrt show];

    }
}
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
    if(error)
    {
        UIAlertView *alrt=[[UIAlertView alloc]initWithTitle:@"" message:@"" delegate:nil cancelButtonTitle:@"" otherButtonTitles:nil, nil];
        [alrt show];
        [self dismissModalViewControllerAnimated:YES];
    }
    else{
        [self dismissModalViewControllerAnimated:YES];
    }

}
3 голосов
/ 19 мая 2011

их много.Вы можете начать здесь и здесь .И проверьте правильность stackoverflow здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...