Для начала выбрал простенькую тему описывающуюся одним классом в SDK и несколькими методами. Итак, отсылка почты из вашего приложения встроенным клиентом Mail.
Работу отсылки почты осуществляет класс MFMailComposeViewController наследник от стандартного UIViewController-а. Первое, что необходимо сделать, это подключить к вашему проекту фраемворк MessageUI.
Потом подключить описание этого фраемворка.
Теперь можно кодить.
- // Перед тем как вызывать диалог отсылки почты необходимо проверить настроен ли у пользователя вообще почтовый клиент.
- if (![MFMailComposeViewController canSendMail])
- {
- // Клиент не настроен, показываем всплывающее окно.
- UIAlertView *tmp = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Warning", @"") message:NSLocalizedString(@"Your e-mail application not configured", @"") delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil];
- [tmp show];
- [tmp release];
- return ;
- }
- // создаем экземпляр обекта MFMailComposeViewController
- MFMailComposeViewController *mcvc = [[MFMailComposeViewController alloc] init];
- // указываем обект делегата (слушателя)
- mcvc.mailComposeDelegate = self;
- // заполняем поле "Кому"
- [mcvc setToRecipients:[NSArray arrayWithObject:@"test@example.com"]];
- // заполняем поле "Тема"
- [mcvc setSubject:NSLocalizedString(@"Testing mail", @"")];
- // пишем тело письма
- [mcvc setMessageBody:NSLocalizedString(@"This is body of mail", @"") isHTML:NO];
- // прикрепляем к письму данные как текст и указываем имя файла приложения к письму
- [mcvc addAttachmentData:[@"Text on attach" dataUsingEncoding: NSUTF8StringEncoding] mimeType:@"text/plain" fileName:@"test.txt"];
- // показываем заполненный контрол
- [self presentModalViewController:mcvc animated:YES];
Нужно помнить, что контрол сам не убирается после нажатия кнопки "Отправить", поэтому в методе слушателе (mailComposeController:didFinishWithResult:error:) закроем наш контрол:
- - (void) mailComposeController:(MFMailComposeViewController*) controller didFinishWithResult:(MFMailComposeResult) result error:(NSError*) error
- {
- [controller dismissModalViewControllerAnimated:YES];
- }
Проект для xCode можно скачать.
Комментариев нет:
Отправить комментарий