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];
}