我想要从我的 iPhone 应用程序发送一封电子邮件。我已经听说过 iOS SDK 没有 API 的电子邮件。我不想因为它将退出我的应用程序,请使用以下代码︰

NSString *url = [NSString stringWithString: @"mailto:foo@example.com?cc=bar@example.com&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!"];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

那么,如何从我的应用程序发送电子邮件?

2008-11-22 06:08:49
问题评论:

回答:

在 3.0 版及更高版本的 iOS 上应使用MFMailComposeViewController类,并已存放在 MessageUI 框架中的MFMailComposeViewControllerDelegate协议。

第一次添加框架并导入︰

#import <MessageUI/MFMailComposeViewController.h>

然后,发送一条消息︰

MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"My Subject"];
[controller setMessageBody:@"Hello there." isHTML:NO]; 
if (controller) [self presentModalViewController:controller animated:YES];
[controller release];

然后该用户完成工作,并及时获取委托回调︰

- (void)mailComposeController:(MFMailComposeViewController*)controller  
          didFinishWithResult:(MFMailComposeResult)result 
                        error:(NSError*)error;
{
  if (result == MFMailComposeResultSent) {
    NSLog(@"It's away!");
  }
  [self dismissModalViewControllerAnimated:YES];
}

请务必检查是否将设备配置为发送电子邮件︰

if ([MFMailComposeViewController canSendMail]) {
  // Show the composer
} else {
  // Handle the error
}

+ 1。需要导入框架提到这里 (mobileorchard.com/...).

若要保存您跳转,您需要为 #import < MessageUI/MFMailComposeViewController.h >

和 MessageUI 框架

只是要注意,因为此答案已写入 UIViewController 的方法presentModalViewController:animated:dismissModalViewControllerAnimated:已标记为过时 – 而是基于数据块的替换方法presentViewController:animated:completion:dismissViewControllerAnimated:completion:应使用。

在 IOS 6 [self presentModalViewController:controller animated:YES];替换为[self presentViewController:controller animated:YES completion:nil];[self dismissModalViewControllerAnimated:YES];替换为[self dismissViewControllerAnimated:YES completion:nil];

MFMailComposeViewController是 iPhone OS 3.0 软件发行后转的方式。您可以查看示例代码我编写的教程.

通过 Mugunth 的超帖子。好伙伴 !

它真的超。谢谢。我设计的视图专门用于接收的电子邮件和用户的主题。通过实现的相同代码它再次显示有些类似视图。可以我调用委托方法从我按钮按下事件中视图控制器类,谢谢您的帮助下 Shibin

我下载的相同的示例代码,但它不能发送任何邮件。它只会提示邮件成功发送,但在收到任何邮件。我已经试过添加 MessageUI 框架出现了红色的颜色,默认情况下,但应用程序仍未发送的邮件。在此方面的任何帮助将非常感谢。我正在在模拟器中测试该应用程序。

从模拟器不能发送电子邮件。

我想在此处添加的几种方法︰

  1. 使用 mailto URL 不起作用在模拟器将 mail.app 不是安装在该模拟器上。它在运行设备不过。

  2. 没有 mailto URL 的长度限制。如果 URL 是大于 4096 个字符,将不会启动将 mail.app。

  3. OS 3.0,使您无需离开您的应用程序发送一封电子邮件中没有一个新的类。请参阅 MFMailComposeViewController 的类。

如果您想要从应用程序发送电子邮件,上面的代码是进行它,除非您在您的应用程序内的代码您自己的邮件客户端 (SMTP) 或为您发送邮件的服务器的唯一方法。

例如,无法编写您的应用程序调用您为您发送邮件的服务器上的 URL。然后您只需调用 URL 从您的代码。

请注意,使用上述代码不能将任何附加到电子邮件,SMTP 客户端方法将允许您执行操作,以及服务器端方法。

下面的代码用于在应用程序中发送带有附件的电子邮件附件还有图像。您可以发送任何类型的文件的唯一事情就是需要注意的是,您必须指定正确的mimeType

.h 文件中添加此

#import <MessageUI/MFMailComposeViewController.h>

MessageUI.framework添加到您的项目文件

NSArray *paths = SSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"myGreenCard.png"];



MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"Green card application"];
[controller setMessageBody:@"Hi , <br/>  This is my new latest designed green card." isHTML:YES]; 
[controller addAttachmentData:[NSData dataWithContentsOfFile:getImagePath] mimeType:@"png" fileName:@"My Green Card"];
if (controller)
    [self presentModalViewController:controller animated:YES];
[controller release];

委托方法是如下所示

  -(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error;
{
    if (result == MFMailComposeResultSent) {
        NSLog(@"It's away!");
    }
    [self dismissModalViewControllerAnimated:YES];
}
请输入您的翻译

How can I send mail from an iPhone application

确认取消