iOS-调用系统的发送短信和发送邮件功能,实现短信分享和邮件分享

一、邮件分享

1、iOS系统自带邮件设置邮箱(此处以QQ邮箱为例)

a.打开电脑,登录邮箱(以QQ邮箱为例),进入设置-账户-找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”将“IMAP/SMTP服务”打开后并生成授权码。

b、生成授权码由16位随机字母组成

c、设置手机端。打开设置-邮件-添加账户


d、此处以QQ邮箱为例,其他邮箱也可。

e、按要求填写后点击下一步。

f、按图中所示进行设置后,最后点击“发件服务器”SMTP设置

g、继续点击。“主要服务器”设置

h、按图中设置,最后完成。

i、选择“邮件”app,即可使用。

注意:由于QQ邮箱激活时间不满14天,暂时无法设置POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

会造成只能发送邮件,但是邮件接收不到的情况。

2、实现功能

- (void)displayMailComposerSheet

{

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];

// 设置picker的委托方法,完成之后会自动调用成功或失败的方法

picker.mailComposeDelegate = self;

// 添加主题

[picker setSubject:@"文件分享"];

// 添加收件人

//NSArray *toRecipients = [NSArray arrayWithObject:@"收件人@qq.com"];

// 说明:也可以添加多个收件人,代码如下所示:

//NSArray *toRecipients = [NSArray arrayWithObjects:@"one@qq.com",@"two@qq.com",nil];

// 添加抄送

//NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@qq.com",@"third@qq.com", nil];

// 添加密送

//NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@qq.com"];

[picker setToRecipients:toRecipients];

//[picker setCcRecipients:ccRecipients];

//[picker setBccRecipients:bccRecipients];

// 直接在HTML代码中写入图片的地址

NSString *emailBody = [NSString stringWithFormat:@"

我分享了图片

"];

[picker setMessageBody:emailBody isHTML:YES];

[self presentModalViewController:picker animated:YES];

[picker release];

}

这样实现的效果是,在邮件中会显示一个图片和一段文本,关键是第25行代码,一定要设置isHTML为YES。但实际应用中,图片一般我们没有上传到服务器上,而是在客户端,这时候我们可以用下面的方式来发送图片(将第23行代码替换成下面的代码):

// 发送图片附件(其他格式的附件,可以都先转化称NSData类型,然后设置相应的mimeType即可,如txt类型为@"text/txt",doc类型为@"text/doc",pdf类型为@"file/pdf"等等)

NSData *myData = [NSData dataWithContentsOfFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"new.png"]];

[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"new.png"];

NSString *emailBody = [NSString stringWithFormat:@"

我分享了图片

"];

使用上面这种方式,将isHTML设置为YES的话,图片会显示在正文中;isHTML设置为NO的话,图片会显示在附件中。

》添加邮箱附件方法:

//发送图片附件

NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];

NSData *myData = [NSData dataWithContentsOfFile:path];

[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy.jpg"];

//发送txt文本附件

NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"txt"];

NSData *myData = [NSData dataWithContentsOfFile:path];

[picker addAttachmentData:myData mimeType:@"text/txt" fileName:@"MyText.txt"];

//发送doc文本附件

NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"doc"];

NSData *myData = [NSData dataWithContentsOfFile:path];

[picker addAttachmentData:myData mimeType:@"text/doc" fileName:@"MyText.doc"];

//发送pdf文档附件

NSString *path = [[NSBundlemainBundle]pathForResource:@"CodeSigningGuide"ofType:@"pdf"];

NSData *myData = [NSDatadataWithContentsOfFile:path];

[pickeraddAttachmentData:myDatamimeType:@"file/pdf"fileName:@"rainy.pdf"];

邮件发送完成之后,可以在如下的委托方法中进行相应的处理,委托方法如下所示:

- (void)mailComposeController:(MFMailComposeViewController*)controller

didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error

{

switch (result)

{

case MFMailComposeResultCancelled:

NSLog(@"Result: Mail sending canceled");// 邮件发送取消

break;

case MFMailComposeResultSaved:

NSLog(@"Result: Mail saved");// 邮件保存成功

break;

case MFMailComposeResultSent:

NSLog(@"Result: Mail sent");// 邮件发送成功

break;

case MFMailComposeResultFailed:

NSLog(@"Result: Mail sending failed");// 邮件发送失败

break;

default:

NSLog(@"Result: Mail not sent");

break;

}

[self dismissModalViewControllerAnimated:YES];

}

导入MessageUI.framework

.h文件中#import

#import

实现 MFMailComposeViewControllerDelegate, MFMessageComposeViewControllerDelegate

二、发送短信

//短信

-(void)showSMSPicker{

Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));

if (messageClass != nil) {

// Check whether the current device is configured for sending SMS messages

if ([messageClass canSendText]) {

[selfdisplaySMSComposerSheet];

}

else {

UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@""message:@"设备不支持短信功能" delegate:selfcancelButtonTitle:@"确定" otherButtonTitles:nil];

[alert show];

[alert release];

}

}

else {

}

}

-(void)displaySMSComposerSheet

{

MFMessageComposeViewController *picker = [[MFMessageComposeViewControlleralloc]init];

picker.messageComposeDelegate =self;

NSString *smsBody =[NSStringstringWithFormat:@"我分享了文件给您,地址是%@",address] ;

picker.body=smsBody;

[selfpresentModalViewController:pickeranimated:YES];

[pickerrelease];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容