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
- APP应用发送邮件
- Windows App 发送邮件
- App内邮件发送
- 邮件发送的应用
- Django 应用 -- 发送邮件
- iPhone 应用中发送邮件
- 在应用中发送邮件
- 在应用中发送邮件
- ctcall 专注邮件应用发送
- Quartz应用----发送邮件工作调度
- 简单java应用 利用javamail发送邮件
- BI SSIS应用系列之发送邮件
- velocity 学习,邮件发送模板的应用
- Android应用使用JavaMail发送邮件
- Web应用中使用JavaMail发送邮件
- JavaWeb应用中使用JavaMail发送邮件
- JavaWeb应用中使用JavaMail发送邮件
- Web应用中使用JavaMail发送邮件
- ajax和json与php小结合
- JDK9初体会心得
- 兼容不同的屏幕大小
- 关于程序员的文章摘录
- 如何在COCOS2D中绘制3d椭圆柱?
- APP应用发送邮件
- 关于Lucene4.x起Field对象不在指定域排序的一点解惑
- 关于在使用gson解析json时建模与规范冲突的问题
- [BestCoder #31]简要题解
- Android SurfaceView双缓存
- 如何分析APP功能需求、结构?
- 算法设计技巧--离散暴力将时间将为O(0);
- 代码大全:启程
- Java中的接口与抽象类的区别