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入门知识总结。_python系统知识-程序员宅基地

文章浏览阅读126次。转载自品略图书馆http://www.pinlue.com/article/2020/03/1605/4310028299539.html随着人工智能、大数据的时代到来,学习Python的必要性已经显得不言而喻。只要接触一点编程的同学就知道,我一点也没有言过其实。对于学习Python的重要性,这里不再赘述。今天整理的教程,是给零基础的同学入门Python。入门知识Linux..._python系统知识

k8s自定义资源CRD-程序员宅基地

文章浏览阅读266次。在K8S系统扩展点中,开发者可以通过CRD(CustomResourceDefinition)来扩展K8SAPI,其功能主要由APIExtensionServer负责。使用kubernetes的 CustomResourceDefinition 就可以定义出属于我们自己的 kind.使⽤CRD扩展资源分为三步:注册⾃定义资源:开发者需要通过K8S提供的⽅式注册⾃定义资源,即通过CRD进⾏注册,注册之后,K8S就知道我们⾃定义资源的存在了,然后我们就可以像使⽤K8S内置资源⼀样使⽤⾃定义资源(CR)

lombok---类上使用@Getter和@Setter_@getter 依赖-程序员宅基地

文章浏览阅读452次。1.添加对lombok的依赖在pom.xml中的<dependencies>下添加一下代码 <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>2.sts安装插件(1)在项目文件点击右键 -> Maven -> Updata Project(2)选中你的项目,点击ok(这里是确保lo_@getter 依赖

Android 在后台无法启动Activity_此应用没有可供打开的activity 小黑屋-程序员宅基地

文章浏览阅读1.4w次,点赞14次,收藏46次。前言前几天接触的一个闹钟APP项目,闹钟触发从后台启动一个activity,执行之后的响铃操作,但是却失效了,闹钟并没有按时响铃。最后发现是系统拦截了从后台启动的Activity。具体原因一、AndroidQ从后台启动Activity的限制Android 10 (API 级别 29) 及更高版本对后台应用可启动 Activity进行限制。Android10中, 当App的Activit..._此应用没有可供打开的activity 小黑屋

【推荐算法论文阅读】BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Trans-程序员宅基地

文章浏览阅读1.8k次。一、背景之前基于RNN的推荐模型都是按照从左到右单向建模的,单向结构限制了用户行为序列中隐藏表示的能力——它们通常假定一个严格有序的序列,而这并不总是实用的。本文提出了 bert4rec,应用deep biderectional self-attention 来对用户的行为序列进行建模的。为了避免信息泄露,高效的训练双向模型,我们采用Cloze目标来进行顺序推荐,预测序列中的随机mask项,通过对其上下文的联合条件进行预测序列中随机mask的items。二、Bert4Rec1. 问题定义U={u1_bert4rec: sequential recommendation with bidirectional encoder representatio

以太网PCB布局布线_以太网pcb布线要求-程序员宅基地

文章浏览阅读9.7k次,点赞17次,收藏157次。我们现今使用的网络接口均为以太网接口,目前大部分处理器都支持以太网口。目前以太网按照速率主要包括10M、10/100M、1000M三种接口,10M应用已经很少,基本为10/100M所代替。目前以太网接口类型主要采用双绞线的RJ45接口,且基本应用于工控领域,因工控领域的特殊性,所以我们对以太网的器件选型以及PCB设计相当考究。从硬件的角度看,以太网接口电路主要由MAC(Media Access C..._以太网pcb布线要求

随便推点

【学习笔记】数据库MySQL_数据库学习笔记-程序员宅基地

文章浏览阅读801次。1、操作系统中数据存放的载体Windows、Linux和MacOS都是基于文件的操作系统2、什么是数据库系统?数据库系统(DBMS)是指一个能为用户提供信息服务的系统。它实现了有组织地、动态地存储大量相关数据的功能,提供了数据处理和信息资源共享的便利手段3、什么是关系型数据库系统?关系型数据库系统(RDBMS)是指使用了关系模型的数据库系统关系模型中,数据是分类存放的,数据之间可以有联系主流关系型数据库:DB2、Oracle、MysSQL、SQL Server4、什么是NoSQL数据库系统?_数据库学习笔记

计算机网络两个基本问题,计算机网络技术包含的两个主要技术是什么-程序员宅基地

文章浏览阅读2.4k次。计算机网络技术包含的两个主要技术是计算机技术和通信技术。计算机网络具有共享硬件、软件和数据资源的功能,具有对共享数据资源集中处理及管理和维护的能力。本文操作环境:windows10系统、thinkpad t480电脑。(学习视频分享:编程入门)计算机网络技术是通信技术与计算机技术相结合的产物。计算机网络是按照网络协议,将地球上分散的、独立的计算机相互连接的集合。连接介质可以是电缆、双绞线、光纤、微..._计算机网络格式包含的两个主要

創新組合型的架構設計(Part-5):以架構設計推動Agile敏捷_創新部架構-程序员宅基地

文章浏览阅读759次。相關文件:1.高老師的=>A段架構設計_雋語集2.高老師的新書《思考軟件,創新設計:A段架構師的思考技術》==>請看目錄 3.欢迎访问 =>高老师的ADT技术论坛EE EE _創新部架構

python调用海康工业相机并用opencv显示 出现no data[0x80000007]-程序员宅基地

文章浏览阅读2.7k次,点赞4次,收藏15次。前一段时间做项目用的是海康工业相机,想在python代码中调用相机拍照,参考了这篇文章:python调用海康工业相机并用opencv显示(整体实现)_J&A~ing的博客-程序员宅基地_python调用海康工业相机代码大致是需要循环调用相机拍照,以拍到的照片作为条件调用Vision Master软件特定模板。在进行一次循环之后,发现运行代码出现了如下问题:no data[0x80000007]通过查询海康的官方文件,发现状态码0x80000007表示无数据。_no data[0x80000007]

融合 反走样 雾_计算机图形学雾化和反走样定义-程序员宅基地

文章浏览阅读830次。15.1、融合  15.1.1 Alpha值与融合(Blending)  Alpha值在前面几章中已经提到过,但是几乎所有例程都将它设置为1.0,没有详细讨论它为其它值时的情况。融合,是本章的重点,它是透明技术、数字合成和计算机绘画技术的核心。固名思义,融合就是指两种颜色各分量依据一定的比例混在一起合二为一。而这种比例就来源于Alpha值,即RGBA中的A或(r、g、b、a)中的a值,通常称a_计算机图形学雾化和反走样定义

python视觉识别定位_机器视觉以及验证码识别-程序员宅基地

文章浏览阅读821次。机器视觉从 Google 的无人驾驶汽车到可以识别假钞的自动售卖机,机器视觉一直都是一个应用广 泛且具有深远的影响和雄伟的愿景的领域。我们将重点介绍机器视觉的一个分支:文字识别,介绍如何用一些 Python库来识别和使用在线图片中的文字。我们可以很轻松的阅读图片里的文字,但是机器阅读这些图片就会非常困难,利用这种人类用户可以正常读取但是大多数机器人都没法读取的图片,验证码 (CAPTCHA)就出现..._pytesseract定位识别