iOS发送邮件

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" ];
     //NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];
     //NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com", nil];
     [mailPicker setToRecipients: toRecipients];
     //[picker setCcRecipients:ccRecipients];   
     //[picker setBccRecipients:bccRecipients];
     
     // 添加图片
     UIImage *addPic = [UIImage imageNamed: @ "123.jpg" ];
     NSData *imageData = UIImagePNGRepresentation(addPic);            // png
     // NSData *imageData = UIImageJPEGRepresentation(addPic, 1);    // jpeg
     [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!" ;
     //@"mailto:first@example.com?cc=second@example.com,third@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];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值