iPhone отправляет электронное письмо без использования MessageUI

Привет, я ищу помощь, я новичок в программировании какао и iphone

Есть ли способ отправить электронное письмо, используя стандартную учетную запись, настроенную на устройстве, БЕЗ открытия пользовательского интерфейса для создания сообщения?

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

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

Я сделал текстовую область и кнопку, но он открывает мне окно создания, когда я использую MFMailComposeViewController ...

или, возможно, используя окно создания, но скрыть определенные поля, такие как to, cc, bcc ...

все статьи, которые я нашел в Интернете, либо устарели, либо о MFMailComposeViewController ...

с нетерпением жду вашего повтора

Спасибо...


person Matt Harasymczuk    schedule 02.03.2011    source источник


Ответы (2)


Можно использовать MFMailComposeViewController без взаимодействия с пользователем. Очевидно, что этот метод основан на недокументированных API, поэтому он может сломаться в любой момент. Кроме того, не стоит отправлять приложение, которое делает это, в App Store…

- (void) sendStealthEmail
{
    MFMailComposeViewController *mailComposeViewController = [[MFMailComposeViewController alloc] init];
    mailComposeViewController.mailComposeDelegate = self;
    [mailComposeViewController setToRecipients:[NSArray arrayWithObject:@"[email protected]"]];
    [mailComposeViewController setSubject:@"Stealth email"];
    [mailComposeViewController setMessageBody:@"Pwned" isHTML:NO];
    [mailComposeViewController view];
}

- (void) mailComposeController:(MFMailComposeViewController*)mailComposeViewController bodyFinishedLoadingWithResult:(NSInteger)result error:(NSError*)error
{
    @try
    {
        id mailComposeController = [mailComposeViewController valueForKeyPath:@"internal.mailComposeController"];
        id sendButtonItem = [mailComposeViewController valueForKeyPath:@"internal.mailComposeView.sendButtonItem"];
        [mailComposeController performSelector:@selector(send:) withObject:sendButtonItem];
    }
    @catch (NSException *e) {}
    [mailComposeViewController release];
}
person 0xced    schedule 03.03.2011
comment
@Oxced он не работает с последней версией iOS 6, вы можете предложить какое-либо решение? - person Marine; 15.02.2013
comment
У Оле Бегеманна есть отличное объяснение того, почему это перестало работать на iOS 6: oleb.net/blog/2012/10/remote-view-controllers-in-ios-6 Мы ничего не можем с этим поделать, и это действительно хорошо! - person 0xced; 16.02.2013
comment
@ 0xced. Apple одобрила бы это? - person Gajendra K Chauhan; 07.08.2013
comment
Нет, Apple этого не одобрит. - person 0xced; 09.08.2013
comment
Этот API задокументирован и поддерживается Apple: разработчик. apple.com/library/ios/documentation/MessageUI/ - person Oren; 17.12.2014
comment
Класс MFMailComposeViewController не изменился, начиная с iOS 3.0, и отправка скрытых электронных писем не поддерживается. - person 0xced; 17.12.2014

MFMailComposeViewController - это класс, предоставляемый Apple для отправки писем.

Если вы не хотите использовать композитор, вам нужно написать свой собственный smtp-клиент. (Это может быть php, .net, java или любая другая технология). Вы также можете попробовать skpsmtpmessage

person iHS    schedule 02.03.2011
comment
Да, это работает нормально ... и мне нужно, чтобы из моего приложения он получил подарок, используя почту из приложения MAIL ... Затем я хочу отправить письмо с этого почтового идентификатора. - person sairam; 20.04.2014