2009-09-07 10 views
9

Ho utilizzato il MessageUI framework per inviare la posta con allegato dalla mia applicazione. Ma ho ottenuto il seguente errore,iphone email allegato

2009-09-07 19:52:23.483 emailTest[11711:5b17] 
Error loading /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/DataClassMigrators/AccountMigrator.migrator/AccountMigrator: dlopen(/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/DataClassMigrators/AccountMigrator.migrator/AccountMigrator, 265): Library not loaded: /System/Library/PrivateFrameworks/MobileWirelessSync.framework/MobileWirelessSync 

Referenced from: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/DataClassMigrators/AccountMigrator.migrator/AccountMigrator 

     Reason: image not found 

2009-09-07 19:52:23.489 emailTest[11711:5b17] [+[AccountsManager _migrateAccountsIfNeeded]] Accounts migration failed 
[Switching to process 11711 local thread 0xf03] 

il mio codice è,

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc]init]; 
picker.mailComposeDelegate = self; 
[picker setSubject:@"This is iPhone email attachment test"]; 

UIImage *sampleImg = [UIImage imageNamed:@"iPhone.jpg"]; 
NSData *imageData = UIImageJPEGRepresentation(sampleImg, 1); 
[picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"iPhone.jpg"]; 


NSString *emailBody = @"I am sending the image attachment with iPhone email service"; 
[picker setMessageBody:emailBody isHTML:YES]; 

[self presentModalViewController:picker animated:YES]; 
[picker release]; 

ti prego, aiutami.

+0

Sii più specifico: quale codice stai eseguendo per creare l'allegato? Per staccare il messaggio? In che modo stai "utilizzando il framework MessageUI"? – Tim

+0

si prega di dare un'occhiata al codice. – SST

+0

ciao, hai fatto funzionare il tuo codice. Anche io ho ricevuto lo stesso messaggio mentre ho toccato il pulsante di invio nell'e-mail. Ma, non sto aggiungendo nessun allegato con la posta. Non ho potuto chiudere il controller di posta quando ho toccato il pulsante Annulla. Sto aggiungendo il controller di posta al livello cocos2d. Qualsiasi aiuto per favore. Grazie. –

risposta

16

Non è necessario digitare l'estensione nel nome file. come "iphone.jpg" non funziona. basta scrivere "iphone" nel nome del file perché già si definisce mimeType. E devi anche definire il percorso per la risorsa.

Di seguito è riportato il codice di esempio per allegare il file "rainy.png" con la posta.

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
picker.mailComposeDelegate = self; 

[picker setSubject:@"Hello"]; 


// Set up recipients 
NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

[picker setToRecipients:toRecipients]; 
[picker setCcRecipients:ccRecipients]; 
[picker setBccRecipients:bccRecipients]; 

// Attach an image to the email 
NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"png"]; 
NSData *myData = [NSData dataWithContentsOfFile:path]; 
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"rainy"]; 

// Fill out the email body text 
NSString *emailBody = @"It is raining"; 
[picker setMessageBody:emailBody isHTML:NO]; 

[self presentModalViewController:picker animated:YES]; 
[picker release]; 
0

Questo errore sembra essere correlato alla posta in esecuzione nel simulatore e non al codice. Anche campione azioni Apple MailComposer segnala l'errore identico nel simulatore:

2009-11-12 20:30:39.270 MailComposer[7426:4f1f] Error loading /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/DataClassMigrators/AccountMigrator.migrator/AccountMigrator: dlopen(/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/DataClassMigrators/AccountMigrator.migrator/AccountMigrator, 265): Library not loaded: /System/Library/PrivateFrameworks/MobileWirelessSync.framework/MobileWirelessSync 
    Referenced from: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/DataClassMigrators/AccountMigrator.migrator/AccountMigrator 
    Reason: image not found 
2009-11-12 20:30:39.271 MailComposer[7426:4f1f] [+[AccountsManager _migrateAccountsIfNeeded]] Accounts migration failed 
+0

Ciao, Sto ottenendo lo stesso nel registro. Quando ho toccato il pulsante Chiudi o Invia nel controller di posta. Sto aggiungendo il controller di posta al livello cocos2d. E non ricevo "la posta in esecuzione nel simulatore e non nel tuo codice". Che cos'è ? possiamo cambiarlo? Grazie. –

0

Add seguente metodo per chiudere la MFMailComposeViewController:

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

{ 
// NEVER REACHES THIS PLACE 
[self dismissModalViewControllerAnimated:YES]; 

NSLog (@"mail finished"); 
} 
+0

Buon punto, ma probabilmente non è il problema qui ... btw, dovrebbe essere 'MFMailComposeResult' invece di' MFailComposeResult'. – newenglander

0

uso questo per collegare immagine in una mail, testato in ios 4,5, 6

MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
    UIImage *myImage = [UIImage imageNamed:@"image.png"]; 
    NSData *imageData = UIImagePNGRepresentation(myImage); 
    [mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"image"];