Web开发的时候邮箱注册登录是必不可少的,手机号可以更换,不过相对而言,邮箱只是用于比较重要的时候用到,比如找工作的时候必填的邮箱,注册网站会员的邮箱验证。现在的手机和Web的其实操作是一样的,大多数情况还是邮件的发送,iOS上有两种邮件发送的方式,一种是使用内置的MFMailComposeViewController发送邮件,第二种就是通过第三方类库SKPSMTPMessage发送邮件(https://github.com/jetseven/skpsmtpmessage).
MFMailComposeViewController发送
iOS3.0之后你能通过内置的MFMailComposeViewController构成一个邮件发送接口,不过模拟器上不支持,而且默认的界面不太符合中国人邮件发送的习惯,但是iOS既然有了,还是简单看下效果:
首先导入MessageUI(#import <MessageUI/MessageUI.h>),实现MFMailComposeViewControllerDelegate协议;
邮件发送方法:
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
|
-(
void
)displayComposerSheet
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate =
self
;
//设置主题
[picker setSubject:@
"博客园-FlyElephant"
];
//设置收件人
NSArray
*toRecipients = [
NSArray
arrayWithObjects:@
"FlyElephant@163.com"
,
nil
];
NSArray
*ccRecipients = [
NSArray
arrayWithObjects:@
"10000@qq.com"
,
@
"10000@sina.com"
,
nil
];
NSArray
*bccRecipients = [
NSArray
arrayWithObjects:@
"keso@sina.com"
,
nil
];
[picker setToRecipients:toRecipients];
[picker setCcRecipients:ccRecipients];
[picker setBccRecipients:bccRecipients];
//设置附件为图片
NSString
*path = [[
NSBundle
mainBundle] pathForResource:@
"man"
ofType:@
"jpg"
];
NSData
*myData = [
NSData
dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@
"image/png"
fileName:@
"man"
];
// 设置邮件发送内容
NSString
*emailBody = @
"IOS中的个人博客地址:http://www.cnblogs.com/xiaofeixiang"
;
[picker setMessageBody:emailBody isHTML:
NO
];
//邮件发送的模态窗口
[
self
presentModalViewController:picker animated:
YES
];
}
|
邮件发送完成调用的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-(
void
)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(
NSError
*)error
{
switch
(result)
{
case
MFMailComposeResultCancelled:
//取消
NSLog
(@
"MFMailComposeResultCancelled-取消"
);
break
;
case
MFMailComposeResultSaved:
// 保存
NSLog
(@
"MFMailComposeResultSaved-保存邮件"
);
break
;
case
MFMailComposeResultSent:
// 发送
NSLog
(@
"MFMailComposeResultSent-发送邮件"
);
break
;
case
MFMailComposeResultFailed:
// 尝试保存或发送邮件失败
NSLog
(@
"MFMailComposeResultFailed: %@..."
,[error localizedDescription]);
break
;
}
// 关闭邮件发送视图
[
self
dismissViewControllerAnimated:
YES
completion:
nil
];
}
|
效果演示:
SKPSMTPMessage发送
这个第三方类库出现的比较早,引用的也比较多,把常用的邮件发送都封装到了起来,直接调用,是一个很简单的事情,下载之后会看到一个Demo和一个SMTPLibrary,直接将SMTPLibray拷贝到项目中,引用即可:
①需要发送的控制器上导入SKPSMTPMessage和NSData+Base64Additions头文件
#import "SKPSMTPMessage.h"
#import "NSData+Base64Additions.h"
②实现SKPSMTPMessageDelegate协议;
③具体发送方法:
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
|
SKPSMTPMessage *myMessage = [[SKPSMTPMessage alloc] init];
myMessage.fromEmail=@
"keso@163.com"
;
myMessage.toEmail=@
"FlyElephant@qq.com"
;
myMessage.bccEmail=@
"Goodman@qq.com"
;
myMessage.relayHost=@
"smtp.163.com"
;
myMessage.requiresAuth=
YES
;
if
(myMessage.requiresAuth) {
myMessage.login=@
"keso@163.com"
;
myMessage.pass=@
"keso"
;
}
myMessage.wantsSecure =
YES
;
//为gmail邮箱设置 smtp.gmail.com
myMessage.subject = @
"博客园-FlyElephant"
;
myMessage.delegate =
self
;
//设置邮件内容
NSDictionary
*plainPart = [
NSDictionary
dictionaryWithObjectsAndKeys:@
"text/plain; charset=UTF-8"
,kSKPSMTPPartContentTypeKey,
@
"做一个简简单单,快快乐乐的程序员~keso"
,kSKPSMTPPartMessageKey,@
"8bit"
,kSKPSMTPPartContentTransferEncodingKey,
nil
];
myMessage.parts = [
NSArray
arrayWithObjects:plainPart,
nil
];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[myMessage send];
});
|
④设置发送之后的处理:
1
2
3
4
5
6
7
8
9
10
|
- (
void
)messageSent:(SKPSMTPMessage *)message
{
NSLog
(@
"恭喜,邮件发送成功"
);
}
- (
void
)messageFailed:(SKPSMTPMessage *)message error:(
NSError
*)error
{
NSLog
(@
"不好意思,邮件发送失败"
);
}
|
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4348763.html,如需转载请自行联系原作者