我最近向蘋果提交了一個應用程序,很遺憾它被拒絕了。給出的原因是它有一個電子郵件給朋友功能,這是行不通的。 (不用說,但它在我的設備上效果很好)。我正在使用MFMailComposeViewController,填充主題和正文並添加附件。用戶然後必須採取行動的其餘部分發送。當我問擬訂評論家說...使用MFMailComposeViewController發送失敗的郵件
我們與您的應用程序發送的電子郵件在Gmail的上市,而雅虎,測試帳戶「發件箱」,有一個錯誤,說明發送郵件服務器無法被達到。
......這應該算作我的應用程序的錯誤嗎?我實際上並沒有發送郵件,我只是使用內置的SDK調用來準備郵件。我知道「這是你的設備」的論點不會真正推動我獲得我的應用批准,但我真的認爲這是他們的設備。
任何人都可以想到任何電子郵件會失敗的原因,這樣的消息和這些原因,我可以做的任何事情呢?
而現在我的代碼...
...這裏我將消息發送
- (void)sendMail
{
NSData *vCards = (NSData *)ABPersonCreateVCardRepresentationWithPeople((CFArrayRef)self.selections);
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:@"Contact"];
[mc setMessageBody:@"<p>My message...<p>" isHTML:YES];
NSString *label = ([self.selections count] == 1)? (NSString *)ABRecordCopyCompositeName([self.selections objectAtIndex:0]): @"Contacts";
[mc addAttachmentData:vCards mimeType:@"text/x-vcard" fileName:label];
[self presentModalViewController:mc animated:YES];
[mc release];
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
switch (result) {
case MFMailComposeResultCancelled:
NSLog(@"Mail send canceled.");
break;
case MFMailComposeResultSaved:
NSLog(@"Mail saved.");
break;
case MFMailComposeResultSent:
NSLog(@"Mail sent.");
break;
case MFMailComposeResultFailed:
NSLog(@"Mail send error: %@.", [error localizedDescription]);
break;
default:
break;
}
[self dismissModalViewControllerAnimated:YES];
}
現在我明白了,我不是真正在做什麼有用的,如果該消息失敗,而應該是如果郵件在撰寫級別失敗,甚至會收到用戶的發件箱郵件?
我打算提交另一個版本,提醒錯誤的詳細信息,但我懷疑會有任何。
我在應用程序中使用了幾乎相同的代碼,並且工作正常。這個裁決看起來很苛刻,與您的應用無關。您是否提出上訴,暗示其測試設備上的電子郵件帳戶設置不正確? – onnoweb
我唯一的附加功能是檢查設備是否可以發送電子郵件,使用[MFMailComposeViewController canSendMail] – onnoweb
謝謝onnoweb,我剛剛提交了一個上訴。由於ABPersonCreateVCardRepresentationWithPeople我無論如何都需要iOS 5,所以它應該能夠發送郵件而不管。會讓你知道它是如何工作的。 – rob5408