攻城狮iOSiOS-静默方式发送邮件(SKPSMTPMessage)
GuoYanjun
- 文/一月筠
-- 转载请注明 --
- 在iOS开发中,有时候我们需要使用到发送邮件的功能,比如说接收用户的反馈信息、APP的崩溃情况的通知等等…
前言
在iOS开发中,有时候我们需要使用到发送邮件的功能,比如说接收用户的反馈信息、APP的崩溃情况的通知等等。
iOS系统提供了两种原生方式已供开发者发送邮件(email):
1)openURL(原生)
——用户体验较差,程序会进入后台,跳转至邮件发送界面。
2)MFMailComposeViewController(原生)
——不会进入后台,使用模态弹出邮件发送视图。
这里主要介绍第三种,采用静默方式发送的email:
使用到的库:
SKPSMTPMessage
下载地址:
https://github.com/jetseven/skpsmtpmessage
——你可以不需要告知用户将要进行邮件发送的事情,我在想这个是不是不符合苹果的理论。当然你也可以在发送之前弄个弹出框告知用户,并让用户选择是否发送。
小主在Xcode 8.1,真机(iOS 10.2.1)环境下亲测通过,这里就如何使用该库做一下说明,希望对其他有需要的同学有帮助。
1、工程配置
我是手动导进工程里,因为该库是使用MRC开发的,所以就要设置进行相应的设置。
在项目的build phrases->compile source->找到SKPSMTPMessage.m,NSStream+SKPSMTPExtensions.m这两个文件,双击后再弹框中添加-fno-objc-arc
。
可见图例:
2、引入头文件
1 2
| #import "SKPSMTPMessage.h" #import "NSData+Base64Additions.h"
|
3、遵循协议
4、协议的实现
1 2 3 4 5 6 7 8 9 10
| #pragma mark - SKPSMTPMessageDelegate - (void)messageSent:(SKPSMTPMessage *)message { [self.view makeToast:@"发送邮件成功" duration:1 position:@"center"]; } - (void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error { [self.view makeToast:[NSString stringWithFormat:@"发送邮件失败nerror - %@",error] duration:1 position:@"center"]; NSLog(@"message - %@\nerror - %@", message, error); }
|
5、方法的实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| - (void)sendEmail { SKPSMTPMessage *myMessage = [[SKPSMTPMessage alloc] init]; myMessage.fromEmail = @"******@163.com"; myMessage.toEmail = @"******@qq.com"; myMessage.relayHost = @"smtp.163.com"; myMessage.requiresAuth = YES; if (myMessage.requiresAuth) { myMessage.login = @"******@163.com"; myMessage.pass = @"******"; } myMessage.wantsSecure = YES; myMessage.subject = @"iOS静默方式发送的email"; myMessage.delegate = self; NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain; charset=UTF-8",kSKPSMTPPartContentTypeKey, @"是不是很简单呀,这样一封email就发送成功了呢!",kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(kIPHONE_WIDTH, kIPHONE_HEIGHT), NO, [[UIScreen mainScreen] scale]); [self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:NO]; UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); NSData *imageData = UIImageJPEGRepresentation(snapshot, 1.0); NSDictionary *imagePart = [NSDictionary dictionaryWithObjectsAndKeys:@"image/jpg;\r\n\tx-unix-mode=0644;\r\n\tname=\"snapshot.jpg\"",kSKPSMTPPartContentTypeKey, @"attachment;\r\n\tfilename=\"snapshot.jpg\"",kSKPSMTPPartContentDispositionKey,[imageData encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil]; myMessage.parts = [NSArray arrayWithObjects:plainPart,imagePart,nil]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [myMessage send]; }); }
|
GuoYanjun
๑۩ﺴ 透过指尖目视锦瑟流年,邂逅一场繁华的悸动 ﺴ۩๑
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 一月筠!