IOS使用mailcore2发送邮件,qq邮箱发送_airmail unable to authenticate with the current se-程序员宅基地

技术标签: IOS笔记  qq邮箱  邮件  ios  

1.首先获取mailcore2的代码

git clone https://github.com/MailCore/mailcore2/

2.将下载的代码拷贝到项目文件目录下,打开自己的工程将下载的mailcore2工程文件mailcore2.xcodeproj直接拉到自己的工程下面
下载中的目录为build-mac/mailcore2.xcodeproj

3.将静态库添加到工程中
(1)在 Link Binary With Libraries 中添加:

libMailCore-ios.a  

(2)在 Target Dependencies 中添加:

static maincore2 ios 

(3)在 Link Binary With Libraries 中添加系统包:

CFNetwork.framework  
Security.framework  

4.设置编译链接选项
(1)在other linker flag 中添加:

-lctemplate-ios -letpan-ios -lxml2 -lsasl2 -liconv -ltidy -lz -lc++ -stdlib=libc++ -ObjC -lresolv  

(2)在C++ Standard Library选择:

libc++

5.选择target编译静态包

mailcore ios
static mailcore2 ios

6.添加环境变量
选择product->scheme->edit scheme->Run->Arguments->Environment Variables添加OS_ACTIVITY_MODE值威disable
二。我们使用SMTP来发送邮件
1.首先编辑发送参数,调用登陆校验方法

- (void)mailCorelogin
{
    _smtpSession = [[MCOSMTPSession alloc] init];
    _smtpSession.hostname = @"smtp.qq.com";//qq邮箱地址
    _smtpSession.port = 587;//qq邮箱端口号
    _smtpSession.username = @"[email protected]";
    _smtpSession.password = @"xxxxxxxx";//qq邮箱开启SMTP服务之后的**授权码**不是邮箱原始的密码
    _smtpSession.connectionType = MCOConnectionTypeStartTLS;//https


    MCOSMTPOperation *smtpOperation = [self.smtpSession loginOperation];
    [smtpOperation start:^(NSError * error) {
        if (error == nil) {
            NSLog(@"login successed");
        } else {
            NSLog(@"login failure: %@", error);
        }  
    }];
}

二,设置发送具体信息

-(void)buildMessage
{
    // 构建邮件体的发送内容
    MCOMessageBuilder *messageBuilder = [[MCOMessageBuilder alloc] init];
    messageBuilder.header.from = [MCOAddress addressWithDisplayName:@"张三" mailbox:@"[email protected]"];   // 发送人
    messageBuilder.header.to = @[[MCOAddress addressWithMailbox:@"[email protected]"]];       // 收件人(多人)
//    messageBuilder.header.cc = @[[MCOAddress addressWithMailbox:@"@333333qq.com"]];      // 抄送(多人)
//    messageBuilder.header.bcc = @[[MCOAddress addressWithMailbox:@"[email protected]"]];    // 密送(多人)
    messageBuilder.header.subject = @"测试邮件";    // 邮件标题
    messageBuilder.textBody = @"hello world";           // 邮件正文

    /*
     如果邮件是回复或者转发,原邮件中往往有附件以及正文中有其他图片资源,
     如果有需要你可将原文原封不动的也带过去,这里发送的正文就可以如下配置
     */
    NSString * bodyHtml = @"<p>我是原邮件正文</p>";
    NSString *body = @"我是邮件回复的内容";
    NSMutableString*fullBodyHtml = [NSMutableString stringWithFormat:@"%@<br/>-------------原始邮件-------------<br/>%@",[body stringByReplacingOccurrencesOfString:@"\n"withString:@"<br/>"],bodyHtml];
    [messageBuilder setHTMLBody:fullBodyHtml];
    [self sendMessage:messageBuilder];
}
-(void)sendMessage:(MCOMessageBuilder *)messageBuilder
{
    NSData * rfc822Data =[messageBuilder data];
    MCOSMTPSendOperation *sendOperation = [self.smtpSession sendOperationWithData:rfc822Data];
    [sendOperation start:^(NSError *error) {
        if (error == nil) {
            NSLog(@"send successed");
        } else {
            NSLog(@"send failure: %@", error);
        }  
    }];
}

三。一些问题
1.Error Domain=MCOErrorDomain Code=5 “Unable to authenticate with the current session’s credentials.” UserInfo={NSLocalizedDescription=Unable to authenticate with the current session’s credentials.}
这个错误主要是邮箱帐号或者密码错误。邮箱后缀是否正确(qq邮箱填的密码就是发送短信之后显示的授权码,而不是直接填原始密码)
2.Error Domain=MCOErrorDomain Code=1 “A stable connection to the server could not be established.” UserInfo={NSLocalizedDescription=A stable connection to the server could not be established.}
这个错误可以从以下三个方面尝试解决:
1.hostname不存在,或者拼写错误,修改hostname;该hostname不一定是 imap.**.com,我项目中用到的hostname是 10.101.10.1(主机名)。
2.需要SSL安全链接,将connectionType设置为MCOConnectionTypeTLS;
3.端口号错误。

参考文献:
1,http://blog.csdn.net/qq510304723/article/details/50150303
2.https://www.jianshu.com/p/558b3bd9f88d

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ios_lujian/article/details/78875046

智能推荐

Python 的 Numpy 数值计算_numpy 数组中的值 分组计数-程序员宅基地

文章浏览阅读1k次,点赞4次,收藏5次。文章目录1. Numpy 介绍2. Numpy 数组2.1 介绍2.2 数组属性2.3 创建数组1. Numpy 介绍  Numpy(Numerical Python),是 Python 科学计算的基础包。Mumpy 主要提供了以下内容:快速高效的多维数组对象 ndarray。对数组执行元素级计算以及直接对数组执行科学计算的函数。线性代数、傅里叶变换及随机数生成的功能。将 C、C++..._numpy 数组中的值 分组计数

读写锁 优先级 linux,详谈Linux操作系统的三种状态的读写锁-程序员宅基地

文章浏览阅读885次。读写锁是另一种实现线程间同步的方式。与互斥量类似,但读写锁将操作分为读、写两种方式,可以多个线程同时占用读模式的读写锁,这样使得读写锁具有更高的并行性。读写锁的特性为:写独占,读共享;写锁优先级高。对于读写锁,掌握了这12个字就足矣了。Linux环境下,读写锁具有以下三种状态:读模式下加锁状态 (读锁)写模式下加锁状态 (写锁)不加锁状态虽然读写锁有读锁、写锁、不加锁三种状态,但其实它只有一把锁,..._读写锁 写优先

Java JSON 之 Map 转 JSON 字符串_java map 转字符串-程序员宅基地

文章浏览阅读1.2w次。http://www.verejava.com/?id=16998617072749下载依赖 jar 包 json.jar package com.json9;import java.util.HashMap;import java.util.Map;import org.json.JSONObject;public class Test{ public sta..._java map 转字符串

数据归一化(特征处理) 以及 各种归一化(BN-LN-GN-IN)的实现_数据中不同单位如何归一化-程序员宅基地

文章浏览阅读5.1k次,点赞3次,收藏15次。概述归一化:1. 把数据变成(0,1)或者(1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。2. 把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。标准化:在机器学习中,我们可能要处理不同种类的资料,例如,音讯和图片上..._数据中不同单位如何归一化

python math模块math.ceil(),math.floor() 函数实现向上取整、向下取整_math.floor向上取整-程序员宅基地

文章浏览阅读1.3w次,点赞3次,收藏25次。要注意的是,在除法运算中,/ , 只要有一边有浮点数这个除法运算就是精确运算。都是整数的话在python2.7中就默认是向下取整,,所以你用math.ceil() 函数向上取整是没有用的。 #向上取整print "math.ceil---"print "math.ceil(2.3) =&gt; ", math.ceil(2.3)print "math.ceil(2.6) =&gt; "..._math.floor向上取整

《Spring3实战》摘要(10)使用远程服务_jdk17 hessianproxyfactorybean替换-程序员宅基地

文章浏览阅读293次。第十章 使用远程服务10.1 Spring 远程调用概览10.2 使用 RMI10.3 使用 Hessian 和 Burlap 发布远程服务10.4 使用 Spring 的 HttpInvoker10.5 发布和使用 Web 服务_jdk17 hessianproxyfactorybean替换

随便推点

中国人必须知道的76个常识_中国人必须知道的常识-程序员宅基地

文章浏览阅读501次。1.【十二生肖】子鼠、丑牛、寅虎、卯兔、辰龙、巳蛇、午马、未羊、申猴、酉鸡、戌狗、亥猪2.【十大名茶】西湖龙井(浙江杭州西湖区)、碧螺春(江苏吴县太湖的洞庭山碧螺峰)、信阳毛尖(河南信阳车云山)、君山银针(湖南岳阳君山)、六安瓜片(安徽六安和金寨两县的齐云山)、黄山毛峰(安徽歙县黄山)、祁门红茶(安徽祁门县)、都匀毛尖(贵州都匀县)、铁观音(福建安溪县)、武夷岩茶(福建崇安县)3.【四大名绣】苏绣(苏州)_中国人必须知道的常识

MFC C++打造文件资源管理器(树控件版)_mfc 资源管理器-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏23次。123_mfc 资源管理器

MySQL笔记_非单调的字段-程序员宅基地

文章浏览阅读421次。存储引擎MyISAM和InnoDB区别MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。两者的对比:是否支持行级锁..._非单调的字段

HUSTOJ 2796 && SPOJ1811-程序员宅基地

文章浏览阅读48次。传送门:http://begin.lydsy.com/JudgeOnline/problem.php?id=2796题解:后缀自动机,很裸,但是感觉对后缀自动机还不是特别理解,毕竟我太蒟蒻,等我精通了,再写对它的理解吧。。。   还有写这道题的时候发现数组下标又时候是负数竟然不会爆。。。。。。因为这道题有大写也有小写,可我只开了26竟然A了(后面才发现)。。。。懒得改了代码:..._hustoj 题库

Xshell远程管理Linux-程序员宅基地

文章浏览阅读100次。Xshell[1]是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。Xshell 和SecureCRT的比较:Screen不会闪屏,并且可以回滚,这个功能比较好用。Script的执行顺序可以调整,Secu..._xshell远程管理linux系统

CSRF跨站请求伪造漏洞修复方案_cross-site request forgery(csrf) 漏洞修复-程序员宅基地

文章浏览阅读6.6k次。CSRF(全称Cross-site request forgery)即跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或包含攻击代码的页面,在受害者不知情的情况下以受害者的身份(身份认证所对应的信息)向服务器发送请求,从而完成非法操作(如转账、改密等)。由于发生CSRF攻击后,攻击者是强迫用户向服务器发送请求,所以会造成用户信息被迫修改,更严重者引发蠕..._cross-site request forgery(csrf) 漏洞修复

推荐文章

热门文章

相关标签