Отправка сообщения электронной почты

В iOS 3.0 и позже, можно использовать MFMailComposeViewController класс для представления стандартного почтового состава взаимодействует через интерфейс в приложении. До отображения интерфейса Вы используете методы класса для конфигурирования почтовых получателей, предмета, организации и любых присоединений, которые Вы хотите включать. Когда Вы представляете интерфейс (использование стандартных методов контроллера представления), у пользователя есть опция редактирования содержания сообщения прежде, чем представить его Почтовому приложению для поставки. У пользователя также есть опция отменить электронную почту в целом.

Для использования почтового интерфейса состава необходимо добавить MessageUI.framework к Вашему проекту XCode и ссылке против него в любых соответствующих целях. Для доступа к классам и заголовкам платформы включайте #import <MessageUI/MessageUI.h> оператор наверху любых файлов соответствующего источника. Для получения информации о том, как добавить платформы к Вашему проекту, посмотрите Файлы в Проектах в Руководстве по управлению проектами XCode.

Использовать MFMailComposeViewController класс в Вашем приложении, Вы создаете экземпляр и используете его методы для установки начальных почтовых данных. Необходимо также присвоить объект mailComposeDelegateсвойство из контроллера представления для обработки увольнения интерфейса, когда пользователь принимает или отменяет электронную почту. Объект делегата, который Вы указываете, должен соответствовать MFMailComposeViewControllerDelegateпротокол.

При указании адресов электронной почты для почтового интерфейса состава Вы указываете простые строковые объекты. Если Вы хотите использовать адреса электронной почты из списка пользователя контактов, можно использовать платформу Адресной книги для получения той информации. Для получения дополнительной информации о том, как получить электронную почту и другую информацию с помощью этой платформы, см. Руководство по программированию Адресной книги для iOS.

Перечисление 1 показывает код для создания MFMailComposeViewController объект и отображение почтового состава взаимодействуют через интерфейс модально в Вашем приложении. Вы включали бы displayComposerSheet метод в одном из Ваших пользовательских контроллеров представления и вызова метод по мере необходимости для отображения интерфейса. В этом примере родительский контроллер представления присваивает себя как делегат и реализует mailComposeController:didFinishWithResult:error: метод. Метод делегата увольняет делегата, не принимая дальнейшие меры. В Вашем собственном приложении Вы могли использовать делегата в дорожке, отправил ли пользователь или отменил электронную почту путем исследования значения в параметре результата.

Перечисление 1  , Отправляющее почтовый интерфейс состава

@implementation WriteMyMailViewController (MailMethods)
 
-(void)displayComposerSheet
{
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;
 
    [picker setSubject:@"Hello from California!"];
 
    // Set up the recipients.
    NSArray *toRecipients = [NSArray arrayWithObjects:@"first@example.com",
                                   nil];
    NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com",
                                   @"third@example.com", nil];
    NSArray *bccRecipients = [NSArray arrayWithObjects:@"four@example.com",
                                   nil];
 
    [picker setToRecipients:toRecipients];
    [picker setCcRecipients:ccRecipients];
    [picker setBccRecipients:bccRecipients];
 
    // Attach an image to the email.
    NSString *path = [[NSBundle mainBundle] pathForResource:@"ipodnano"
                                 ofType:@"png"];
    NSData *myData = [NSData dataWithContentsOfFile:path];
    [picker addAttachmentData:myData mimeType:@"image/png"
                                 fileName:@"ipodnano"];
 
    // Fill out the email body text.
    NSString *emailBody = @"It is raining in sunny California!";
    [picker setMessageBody:emailBody isHTML:NO];
 
    // Present the mail composition interface.
    [self presentModalViewController:picker animated:YES];
    [picker release]; // Can safely release the controller now.
}
 
// The mail compose view controller delegate method
- (void)mailComposeController:(MFMailComposeViewController *)controller
              didFinishWithResult:(MFMailComposeResult)result
              error:(NSError *)error
{
    [self dismissModalViewControllerAnimated:YES];
}
@end

Для получения дополнительной информации о стандартных методах контроллера представления для отображения интерфейсов см. Руководство по программированию Контроллера Представления для iOS. Для получения информации о классах сообщения платформа UI посмотрите, передают Ссылку Платформы UI.