2012-08-28 177 views
1

我是iphone開發新手。我建立一個應用程序,通過它我可以發送email.I我用下面的代碼無法通過我的應用程序發送電子郵件

- (IBAction)btnsendPressAction:(id)sender { 

    if([MFMailComposeViewController canSendMail]){ 

     MFMailComposeViewController *mailer=[[MFMailComposeViewController alloc]init]; 
     mailer.mailComposeDelegate=self; 
     [mailer setSubject:@"A Message for testing"]; 
     NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
     [mailer setToRecipients:toRecipients]; 

     UIImage *image=[UIImage imageNamed:@"logo.png"]; 
     NSData *imageData=UIImagePNGRepresentation(image); 
     [mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"logo.png"]; 
     NSString *[email protected]"This is test email"; 
     [mailer setMessageBody:emailBody isHTML:NO]; 
     [self presentModalViewController:mailer animated:YES]; 
     mailer.modalPresentationStyle = UIModalPresentationPageSheet ; 


    } 
    else{ 

     UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"failure" message:@"Alert" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
     [alert show]; 
    } 
} 

我的問題是mailComposeController代表是沒有得到所謂的,我無法通過發送電子郵件我app.I經歷了很多鏈接,但每個地方我都找到了相同的方法。誰可以幫我這個事 ?

+0

我還在我的代碼中添加了適當的代理方法,我沒有放在這裏。 – Raj

+0

檢查您的設備中是否配置了郵件標識。 – Dhruv

+0

我正在測試它我的模擬器,可能我知道如何配置? – Raj

回答

2

您將無法從模擬器發送電子郵件。您只能使用Mail應用程序中配置的任何帳戶在iOS設備上檢查此功能。

+0

好的,我會檢查它的真實設備一次,並會回覆給你 – Raj

+0

不要忘記正確的答案,如果這對你有用。 :) – BornCoder

+0

是的好的。我可能需要一些時間來在設備上測試它,因爲現在我沒有設備 – Raj

0

這裏使用這個link和你的設備上添加(配置)一個帳戶,然後只有你可以發送郵件。

+0

那會讓代表被調用嗎? – trojanfoe

+0

您可以使用該代碼,它對我有用。您需要設置委託並且同一時間符合MFMailComposerDelegate.i得到一個請告訴我這是什麼問題? – Sandy

-1

嘿,我不知道,但可能是有幫助的,取代你的最後一行

mailer.modalPresentationStyle = UIModalPresentationPageSheet ; 

[self presentModalViewController: mailer animated:YES]; 
+0

我在我的應用程序中進行了個人測試,當我檢查第一行的代碼時,它不存在郵件視圖。當我嘗試使用我的第二行鞋履時,我甚至可以發送郵件。所以它不會downvoted回答 – Hiren

0

這段代碼爲我工作:

if ([MFMailComposeViewController canSendMail]) { 
    self.mailController = [[MFMailComposeViewController alloc] init]; 
    [self.mailController setSubject:@"Invitation"]; 
    [self.mailController setMessageBody:@"Message" isHTML:NO]; 
    self.mailController.mailComposeDelegate = self; 

    [self presentModalViewController:self.mailController animated:YES]; 
} 

但要確保你在接口

中實現代理
@interface MyClass() <MFMailComposeViewControllerDelegate> 

,並檢查您的回調方法:

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 
} 
+0

它將在模擬器中工作? – Raj

+0

和你的代碼中的收件人地址在哪裏? – Raj

+0

是的,它在模擬器上工作,我的代理被調用,但你不會在你的電子郵件帳戶上收回電子郵件,嘗試使你的MFMailComposeViewController的屬性,也許ARC正在處理你的mailViewController befor他們發送委託或某事。您不需要代碼中的收件人地址,您可以從地址簿中選擇或手動輸入。 – mientus

相關問題