Невозможно отправить электронную почту, используя MFMailComposeViewController в симуляторе - PullRequest
20 голосов
/ 19 августа 2010

Я новичок в разработке приложений для ios. Ниже приведен код, который я использовал для отправки электронного письма.

   MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
    controller.mailComposeDelegate = self;
    [controller setSubject:@"My Subject"];
    [controller setMessageBody:@"Hello there." isHTML:NO]; 
    [self presentModalViewController:controller animated:YES];
    [controller release];



    - (void)mailComposeController:(MFMailComposeViewController*)controller  
                  didFinishWithResult:(MFMailComposeResult)result 
                                error:(NSError*)error {

          if (result == MFMailComposeResultSent) {

              NSLog(@"It's away!");
          }

          [self dismissModalViewControllerAnimated:YES];
    }

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

Ответы [ 3 ]

51 голосов
/ 19 августа 2010

Вы НЕ МОЖЕТЕ отправлять письма через симулятор.

Вместо этого вы можете установить приложение на устройстве и попробовать оттуда.

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

7 голосов
/ 19 августа 2010

Насколько я знаю, вы не можете отправлять почту с симулятора. MFMailComposeViewController использует почтовый ящик, настроенный в приложении «Почта» iPhone, для отправки почты.У симулятора нет приложения Почта.

3 голосов
/ 13 октября 2011

Вы можете отправлять почту, используя соединение Gmail, вы можете отправлять почту пользователю, для чего вам нужно вставить некоторое количество кода и настройки в ваш код, следующий за кодом, который используется для отправки почты.

- (IBAction)sendMessageInBack:(id)anObject{

    NSLog(@"Start Sending");

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"sample.pdf"];



    NSData *dataObj = [NSData dataWithContentsOfFile:writableDBPath];

    SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init];

    testMsg.fromEmail = @"Your mail id";

    testMsg.toEmail = @"sender mail ids";

    testMsg.relayHost = @"smtp.gmail.com";

    testMsg.requiresAuth = YES;

    testMsg.login = @"Uour mail id";

    testMsg.pass = @"your pass";

    testMsg.subject = @"Test application ";

    testMsg.wantsSecure = YES; // smtp.gmail.com doesn't work without TLS!

    // Only do this for self-signed certs!

    // testMsg.validateSSLChain = NO;

    testMsg.delegate = self;

    NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey,

                               @"Some text to include in body",kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];




        testMsg.parts = [NSArray arrayWithObjects:plainPart,nil];

    [testMsg send];



}


-(void)messageSent:(SKPSMTPMessage *)message{
    [message release];
    NSLog(@"delegate - message sent");
}



-(void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error{
    [message release];
    // open an alert with just an OK button
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Unable to send email" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alert show];
    [alert release];
    NSLog(@"delegate - error(%d): %@", [error code], [error localizedDescription]);
}

И следующие файлы копируются в ваш проект.

enter image description here

Для загрузки образца кода здесь.

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