iPhone
API已经提供了系统写邮件界面的接口,使用MFMailComposeViewController,用来显示界面.
项目中需要添加MessageUi.framework。头文件加入MFMailComposeViewControllerDelegate。#import
<MessageUI/MessageUI.h>
sendMailViewController.m文件的实现:
-
(void)viewDidLoad
{
UIButton
*button = [UIButton buttonWithType: UIButtonTypeRoundedRect];
button.frame
= CGRectMake(0, 40, 320, 50);
[button
setTitle: @"Mail"
forState: UIControlStateNormal];
[button
addTarget: self action: @selector(sendEMail) forControlEvents: UIControlEventTouchUpInside];
[self.view
addSubview: button];
}
-
(void)
alertWithTitle: (NSString *)_title_ msg: (NSString *)msg
{
UIAlertView
*alert = [[UIAlertView alloc] initWithTitle:_title_
message:msg
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alert
show];
[alert
release];
}
-(void)sendEMail
{
Class
mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if
(mailClass != nil)
{
if
([mailClass canSendMail])
{
[self
displayComposerSheet];
}
else
{
[self
launchMailAppOnDevice];
}
}
else
{
[self
launchMailAppOnDevice];
}
}
-(void)displayComposerSheet
{
MFMailComposeViewController
*mailPicker = [[MFMailComposeViewController alloc] init];
mailPicker.mailComposeDelegate
= self;
[mailPicker
setSubject: @"eMail主题"];
NSArray
*toRecipients = [NSArray arrayWithObject: @"first@example.com"];
[mailPicker
setToRecipients: toRecipients];
UIImage
*addPic = [UIImage imageNamed: @"123.jpg"];
NSData
*imageData = UIImagePNGRepresentation(addPic);
[mailPicker
addAttachmentData: imageData mimeType: @""
fileName: @"123.jpg"];
NSString
*emailBody = @"eMail
正文";
[mailPicker
setMessageBody:emailBody isHTML:YES];
[self
presentModalViewController: mailPicker animated:YES];
[mailPicker
release];
}
-(void)launchMailAppOnDevice
{
NSString
*recipients = @"mailto:first@example.com&subject=my
email!";
NSString
*body = @"&body=email
body!";
NSString
*email = [NSString stringWithFormat:@"%@%@",
recipients, body];
email
= [email stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
[[UIApplication
sharedApplication] openURL: [NSURL URLWithString:email]];
}
-
(void)mailComposeController:(MFMailComposeViewController
*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error
{
NSString
*msg;
switch
(result)
{
case
MFMailComposeResultCancelled:
msg
= @"邮件发送取消";
break;
case
MFMailComposeResultSaved:
msg
= @"邮件保存成功";
[self
alertWithTitle:nil msg:msg];
break;
case
MFMailComposeResultSent:
msg
= @"邮件发送成功";
[self
alertWithTitle:nil msg:msg];
break;
case
MFMailComposeResultFailed:
msg
= @"邮件发送失败";
[self
alertWithTitle:nil msg:msg];
break;
default:
break;
}
[self
dismissModalViewControllerAnimated:YES];
}