Не удалось отправить электронное письмо с помощью 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];
}
К сожалению, методы делегирования никогда не запускаются, может ли кто-нибудь предложить, как я могу проверить свою электронную почту с помощью симулятора?
Ответы
Ответ 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]()
Для загрузки примера здесь.