Я совершенно сбит с толку. Я пытаюсь разрешить пользователю отправлять электронную почту через MFMailComposeViewController. Однако, когда я настраиваю свой MFMailComposeViewController с телом HTML, MFMailComposeViewController отображает электронное письмо правильно, но при отправке почты мое приложение вылетает с журналом вроде этого:
2011-12-03 15:04:08.708 Kinopilot[58387:17503] *** Terminating app due to uncaught
exception 'DOMException', reason: '*** INVALID_ACCESS_ERR: DOMException 15'
*** First throw call stack:
(0x2994052 0x210fd0a 0x2993f11 0x391affb 0x3886795 0x64a9b4 0x6487b6
0x648b84 0x648bb4 0x648bb4 0x6424b9 0x69078b 0x658fad 0x658eeb 0x658e6f
0x656d37 0x656bb2 0x65737c 0x65759e 0x658273 0x658758 0x6588e6 0x2995ec9
0x10965c2 0x12d1d54 0x2995ec9 0x10965c2 0x109655a 0x113bb76 0x113c03f
0x113b2fe 0x10bba30 0x10bbc56 0x10a2384 0x1095aa9 0x2270fa9 0x29681c5
0x28cd022 0x28cb90a 0x28cadb4 0x28caccb 0x226f879 0x226f93e 0x1093a9b 0x6680d 0x663d5)
Я почти уверен, что MFMailComposeViewController подключен правильно, потому что все в порядке, когда я устанавливаю тело как простой текст. Кроме того, мой код отлично работает с HTML и обычным текстом на iOS 4.3.
Это соответствующий код:
@interface MailComposeDelegate: NSObject<MFMailComposeViewControllerDelegate>
@end
@implementation MailComposeDelegate
+(MailComposeDelegate*) sharedMailComposeDelegate
{
static MailComposeDelegate* mcd = nil;
if(!mcd) {
mcd = [[MailComposeDelegate alloc]init];
}
return mcd;
}
-(void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error
{
[app.window.rootViewController dismissModalViewControllerAnimated:NO];
}
...
@implementation M3AppDelegate(Email)
-(void)composeEmailWithSubject: (NSString*)subject
andBody: (NSString*)body
{
// -- compose HTML message.
MFMailComposeViewController* mc;
if([MFMailComposeViewController canSendMail])
mc = [[MFMailComposeViewController alloc] init];
if(!mc) return;
mc.mailComposeDelegate = [MailComposeDelegate sharedMailComposeDelegate];
[mc setSubject: subject];
[mc setMessageBody: body isHTML: YES];
// -- show message composer.
[app.window.rootViewController presentModalViewController:mc animated:YES];
}
@end