APP应用发送邮件

来源:互联网 发布:手机淘宝登陆连接失败 编辑:程序博客网 时间:2024/06/06 09:24

Demo

APP应用中发送邮件的方式有两种

方式一

使用"[[UIApplicationsharedApplication]openURL: [NSURL URLWithString:""]]; "

// 邮件接收人NSString *receiverString = @"mailto:first@example.com";// 邮件抄送人(注意:拼接使用符号"?")NSString *ccReceiverString = @"?cc=second@example.com,third@example.com";// 邮件密送人(注意:拼接使用符号"&")NSString *bccReceiverString = @"&bcc=second@example.com,third@example.com";    // 邮件标题(注意:拼接使用符号"&")NSString *title = @"&subject=邮件主题!";// 邮件内容(注意:拼接使用符号"&")NSString *content = @"&body=邮件内容!";    NSString *email = [NSString stringWithFormat:@"%@%@%@%@%@", receiverString, ccReceiverString, bccReceiverString, title, content];email = [email stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];    NSURL *url = [NSURL URLWithString:email];[[UIApplication sharedApplication] openURL: url];

方法二

使用MFMailComposeViewController来显示界面


1、添加框架、导入头文件,及设置代理

1-1、添加framework:MessageUi.framework

1-2、引入头文件:#import <MessageUI/MessageUI.h>

1-3、添加协议:MFMailComposeViewControllerDelegate


2、代码示例

if (self.mailPicker == nil){        self.mailPicker = [[MFMailComposeViewController alloc] init];}// 邮件接收人NSArray *toRecipients = [NSArray arrayWithObject:@"151311301@qq.com"];[self.mailPicker setToRecipients: toRecipients];// 邮件抄送人NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];[self.mailPicker setCcRecipients:ccRecipients];// 邮件密送人NSArray *bccRecipients = [NSArray arrayWithObjects:@"fourth@example.com", nil];[self.mailPicker setBccRecipients:bccRecipients];    // 邮件主题[self.mailPicker setSubject:@"邮件主题"];// 邮件附件UIImage *addPic = [UIImage imageNamed:@"123.jpg"];NSData *imageData = UIImagePNGRepresentation(addPic); // png// NSData *imageData = UIImageJPEGRepresentation(addPic, 1); // jpeg[self.mailPicker addAttachmentData:imageData mimeType:@"image/png" fileName:@"123.jpg"];// 邮件内容NSString *emailBody = @"eMail 正文";[self.mailPicker setMessageBody:emailBody isHTML:YES];    self.mailPicker.mailComposeDelegate = self;[self presentViewController:self.mailPicker animated:YES completion:nil];
// MFMailComposeViewControllerDelegate- (void)mailComposeController:(MFMailComposeViewController *)controller          didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{    switch (result)    {        case MFMailComposeResultCancelled:        {            NSLog(@"邮件发送取消");        }            break;        case MFMailComposeResultSaved:        {            NSLog(@"邮件保存成功");        }            break;        case MFMailComposeResultSent:        {            NSLog(@"邮件发送成功");        }            break;        case MFMailComposeResultFailed:        {            NSLog(@"邮件发送失败");        }            break;        default:break;    }        [self dismissViewControllerAnimated:YES completion:nil];}

效果图示例

如果调用MFMailComposeViewController,但没有设置邮箱帐户信息时,会先显示下图界面,要求新建帐户

 


如果已设置邮箱帐户信息,则出现如下页面(成功发送后页面)

 



注意事项:

1、在调用系统邮件控件前,必须先设置添加发件人邮件帐户,否则会出现异常情况。添加邮件帐户的设置方法:

设置->邮件、通讯录、日历->添加帐户->其他->添加邮件帐户。

2、在编码时,可以通过代码进行控制,如下所示:

if ([MFMailComposeViewController canSendMail]){    // 已设置邮件帐户    MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];    ........}else{    // 未设置邮箱帐户    NSString *title = @"没有邮件帐户";    NSString *message = @"请添加邮件帐户(添加方法:设置->邮件、通讯录、日历->添加帐户->其他->添加邮件帐户)";    [UIAlertView alertWithTitle:title message:message cancelButtonTitle:nil otherButtonTitles:@[AlertRealized] controller:self onDismiss:^(int buttonIndex, NSString *buttonTitle) {            } onCancel:^{            }];}
/** *  初始化时如何为空则停止,否则会出现异常 *  为空的情况,主要是因为手机设备没有设置邮箱帐户信息 *  会自动弹出系统提示,提示内容为"no mail accounts,please set up a mail account in order to send email" *  使用方法"[MFMailComposeViewController canSendMail]"交互比较好,便于设置自定义弹出信息 */MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];if (mailPicker == nil){    // 未生成实例    return;}// 生成实例......




0 0
原创粉丝点击