Web开发的时候邮箱注册登录是必不可少的,手机号可以更换,不过相对而言,邮箱只是用于比较重要的时候用到,比如找工作的时候必填的邮箱,注册网站会员的邮箱验证。现在的手机和Web的其实操作是一样的,大多数情况还是邮件的发送,iOS上有两种邮件发送的方式,一种是使用内置的MFMailComposeViewController发送邮件,第二种就是通过第三方类库SKPSMTPMessage发送邮件(https://github.com/jetseven/skpsmtpmessage).

MFMailComposeViewController发送

iOS3.0之后你能通过内置的MFMailComposeViewController构成一个邮件发送接口,不过模拟器上不支持,而且默认的界面不太符合中国人邮件发送的习惯,但是iOS既然有了,还是简单看下效果:

首先导入MessageUI(#import <MessageUI/MessageUI.h>),实现MFMailComposeViewControllerDelegate协议;

邮件发送方法:

-(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];
}

 邮件发送完成调用的方法:

-(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协议;

③具体发送方法:

 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];
});

④设置发送之后的处理:

- (void)messageSent:(SKPSMTPMessage *)message
{
NSLog(@"恭喜,邮件发送成功");
} - (void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error
{
NSLog(@"不好意思,邮件发送失败"); }

 上面的本人通过163邮箱发送到qq邮箱,其他邮箱之间的发送没有尝试过,以上已经实现了简单的邮件发送,具体邮箱之间的设置,可以参考之前邮件发送文章:

C#邮件发送(最坑爹的邮箱-QQ邮箱)。邮件发送比较简单,如有问题,可随时与我联系~

iOS开发-邮件发送的更多相关文章

  1. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  2. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  3. AspNetCore 目前不支持SMTP协议(基于开源组件开发邮件发送,它们分别是MailKit 和 FluentEmail )

    net所有的功能都要重新来一遍,集成众多类库,core任重道远,且发展且努力!! 我们都知道,很多的邮件发送都是基于这个SMTP协议,但现在的.net core对这方面还不太支持,所以我们选择这两个组 ...

  4. c# .NET开发邮件发送功能的全面教程(含邮件组件源码)

    http://www.cnblogs.com/heyuquan/p/net-batch-mail-send-async.html

  5. iOS开发-发送邮件(E-mail)方法整理合集(共3种)

    前言:在IOS开发中,有时候我们会需要用到邮件发送的功能.比如,接收用户反馈和程序崩溃通知等等.其实这个功能是很常用的,因为我目前就有发送邮件的开发需求,所以顺便整理下IOS发送邮件的方法. IOS原 ...

  6. ios开发--tcp/ip

    简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久!你能耐心看完吗?) 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角 ...

  7. Java Mail 邮件发送Demo

    上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以我就写成了一遍教程,顺便巩固下邮件发送里面的内容. Demo ...

  8. iOS开发之邮件发送代码

    邮件发送功能是由MessageUI Framework提供的,这个框架是iPhone sdk中最简单的框.由一个类.一个视图控制器,一个protocol组成. 一.创建视图控制器: MFMailCom ...

  9. iOS开发——发短信,邮件

    在IOS开发中,有时候我们会需要用到邮件发送的功能.比如,接收用户反馈和程序崩溃通知等等,这个功能是很常用的.在苹果系统中,如果彼此的手机都是iOS设备,并且开通了iMessage功能,那么彼此之间的 ...

随机推荐

  1. 数据转换bug花了半天时间 Java.math.BigDecimal cannot be cast to java.lang.String

    从数据库取出一个 Count函数 统计的值 在代码中要转成Integer类型的时候 Integer.parseInt((String)map.get("ID_")) 报了一下错误: ...

  2. Win10 主题 美化 动漫

    韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha  313134555@qq.com High School D×D 塔城白音Win7主题+Win8主题+Win10主题 Win10 ...

  3. FTP传输一定要注意使用二进制模式

    一个问题困扰了我一下午,刚刚才解决.我要上传一个PHP程序,其中用了sqlite数据库,没想到上传完以后无论如何也不能用,总是数据库查询失败.我登录上SSH,把几乎每个php都调试了一遍,还是没法解决 ...

  4. 重写对象ToString方法

    重写对象ToString方法,引入Newtonsoft.Json public override string ToString() { JsonSerializerSettings settings ...

  5. python使用递归实现一个分形图形

    代码如下: import turtle def main(): t = turtle.Turtle() t.hideturtle() t.speed(10) level = 12 fract(t,-8 ...

  6. IMG镜像写盘工具physdiskwrite,用于MikroTik RouterOS的安装(Windows)

    常用img的备份: 1.linux下使用dd,Windows下使用WinImage 2.或者还有很多,比如再生龙等等. img还原: 1.Win32DiskImager 2.physdiskwrite ...

  7. 一种高效的序列化方式——MessagePack

    最近在弄一些数据分析方面的内容,发现很多时候数据瓶颈在模块之间的数据序列化和反序列化上了,原来项目中用的是Json,找了一圈发现Json.net在Json序列化库中已经是性能的佼佼者了,便准备从序列化 ...

  8. 【Go入门教程2】基本构成元素:标识符(identifier)、关键字(keyword 25个)、字面量(literal)、分隔符(delimiter)、和 操作符(operator)

    基本构成要素 Go 的语言符号 又称 词法元素,共包括 5 类内容——标识符(identifier).关键字(keyword).字面量(literal).分隔符(delimiter) 和 操作符(op ...

  9. android操作sqlite数据库及心得

    写这篇文章主要是网上的对sqlite的操作太多且太杂,非常多时候都不能非常好的运用到自己的项目中,结构不清晰,我自己写了一篇适合刚刚接触的人看的操作方法. 近来用android时要将一些数据保存起来, ...

  10. Android:活动的简单使用

    2.1    活动是什么 活动(Activity)是最容易吸引到用户的地方了,它是一种可以包含用户界面的组件, 主要用于和用户进行交互.一个应用程序中可以包含零个或多个活动,但不包含任何活动的 应用程 ...