我根据Apple的“Tabster”示例代码创建了一个应用程序。该应用运行良好,但我想添加电子邮件。我创建了一个电子邮件应用并尝试了我能想到的每一种方法,从教程中学习或阅读,但它不断崩溃。我在Apple Dev上提出了这个问题。论坛和几个回复只是“将文件复制到现有的应用程序。你应该很好。”显然不是这么简单。我已经添加了MessageUI框架,并尝试以多种不同的方式复制文件,我仍然卡住了。它的星期五,这个问题从星期一开始就让我失望了。我想第一部分是有2个main.m文件,我尝试将它们组合起来,我尝试将邮件的main.m文件重命名为emailmain.m。我不知道还有什么可以尝试。
令我惊讶的是,所有文档和所有关于在iOS应用程序中创建电子邮件的教程都是从创建新应用程序开始的。我错过了什么?如何将电子邮件添加到功能齐全的应用程序中。我将非常感谢任何指导,文献链接或有关该主题的教程。
我能得到的任何帮助都将非常感激。我还想添加其他几种类型的东西,但我甚至无法将电子邮件实施到其中!
感谢您提供的帮助。 约翰
答案 0 :(得分:3)
这是我一直使用的方法。它应该能够简单而干净地添加到任何UIViewController中。
导入您的框架:
#import <MessageUI/MessageUI.h>
确保在界面中包含您的代表:
@interface MyViewController : UIViewController <MFMailComposeViewControllerDelegate>
然后在您的实现中添加此方法或变体,如果您需要它作为IBAction或类似的东西:
- (void)sendEmail
{
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *email = [[MFMailComposeViewController alloc] init];
email.mailComposeDelegate = self;
[email setSubject:@"My Email Subject"];
[email setMessageBody:@"My message body." isHTML:NO];
[self presentModalViewController:email animated:YES];
} else {
UIAlertView *emailAlert = [[UIAlertView alloc] initWithTitle:@"Email Failure" message:@"Your device is not configured to send email" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[emailAlert show];
}
}
您可以在按钮单击或任何您想要的任何内容上调用此方法。它将启动一个电子邮件编辑器视图,您的用户可以在其中点击发送。
答案 1 :(得分:0)
您需要导入MessageUI Framework。无论你想在哪里使用它,都要在相应的.h文件中导入它并设置MFMailComposeViewControllerDelegate。
#import <MessageUI/MessageUI.h>
@interface ViewController : UIViewController <MFMailComposeViewControllerDelegate>
然后,当您要发送消息时,请使用.m文件中的以下代码:
MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
mailViewController.mailComposeDelegate = self;
// Optional Configuration Parameters to make life easier for the user
[mailViewController setSubject:subjectString];
[mailViewController setMessageBody:messageString isHTML:YES];
[mailViewController setToRecipients:recipientsArray];
// Present the VIew Controller and clean up after ourselves
[self presentModalViewController:mailViewController animated:YES];
[mailViewController release];
添加适当的委托方法,您可以在发送电子邮件后使用它来关闭控制器:
-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
[self dismissModalViewControllerAnimated:YES];
}
答案 2 :(得分:0)
以下是使用图片作为附件创建电子邮件的示例代码。您可以根据需要对其进行修改。
-(void)createEmail
{
NSMutableString *emailBody = [[[NSMutableString alloc] initWithString:@"<html><body>"] retain];
[emailBody appendString:@"<p>Some email body text can go here</p>"];
UIImage *emailImage = [UIImage imageNamed:@"myImageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(emailImage)];
NSString *base64String = [imageData base64EncodedString];
[emailBody appendString:[NSString stringWithFormat:@"<p><b><img src='data:image/png;base64,%@'></b></p>",base64String]];
[emailBody appendString:@"</body></html>"];
NSLog(@"%@",emailBody);
//mail composer window
MFMailComposeViewController *emailDialog = [[MFMailComposeViewController alloc] init];
emailDialog.mailComposeDelegate = self;
[emailDialog setSubject:@"My Inline Image Document"];
[emailDialog setMessageBody:emailBody isHTML:YES];
[self presentModalViewController:emailDialog animated:YES];
[emailDialog release];
[emailBody release];
}