Подтвердить что ты не робот

Не удалось отправить электронное письмо с помощью MFMailComposeViewController в симуляторе

Я новичок в разработке приложений 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 away!");
          }

          [self dismissModalViewControllerAnimated:YES];
    }

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

Вы можете отправлять почту, используя подключение 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

Для загрузки примера здесь.