美文网首页
mailcore2 的使用与问题解决

mailcore2 的使用与问题解决

作者: Damon_Rao | 来源:发表于2019-11-26 16:51 被阅读0次

    前言

    MailCore是由MailCore团队开发维护的一个支持POP和IMAP 接收邮件协议以及smtp邮件发送协议。MailCore2是MailCore的下一代产品。

    一、下载及运行配置

    源码下载:传送门~

    通过pod 或者直接下载源码把mailcore2,打开时选择buildmac 文件夹工程直接拖进你的工程

    另需要配置一些参数和添加必要的系统支持库如下:

    1.、添加CFNetwork.framework、Security.framework、libMailCore-ios.a

    2、你的工程build Setting添加:  'Other Linker Flags': -lctemplate-ios -letpan-ios -lxml2 -lsasl2 -liconv -ltidy -lz -lc++ -lresolv -stdlib=libc++ -ObjC  (最新版本设置)

    5.build setting 里 Clang 确保LLVM C++ standard library 为libc++

    6. Build Phases, add a Target Dependency of static mailcore2 ios.

    二、运行成库时遇到的问题

    1、MCOErrorDomain Code=5

    邮箱帐号或者密码错误,邮箱后缀是否正确。

    2、MCOErrorDomain Code=4

    服务器证书无效,可以将 checkCertificateEnabled 设置为NO;另网络原因也可能造成连接不上

    3、MCOErrorDomain Code=1

    a).hostname不存在,或者拼写错误

    b).需要SSL安全链接,将connectionType设置为MCOConnectionTypeTLS;

    c).端口号错误。

    一般配置的端口 imap 993 / smtp 465 ; pop3/smtp 25

    4、找不到'libetpan / libetpan.h'、'unicode / udat.h'、'ctemplate / template.h'

    libetpan 是C写的为不同类型的邮件访问提供支持邮件支持库,ctemplate 是ctemplate 是一个简单实用、功能强大的文字模板(template language),unicode顾明思义是编码库。一般情况下找不到这些文件是编译前后顺序的问题, 生成了iOS 库再去编译mailcore2 的库才能找到。

    a).运行 static mailcore2 ios、再运行 mailcore2 ios

    b).再选择你自己的工程运行

    三、邮件收发问题

    1、邮件中文乱码

    a).文件夹名乱码,是由于命名空间未匹配导致

     MCOIMAPFetchNamespaceOperation * op = [imapSession fetchNamespaceOperation];

    [op start:^(NSError *__nullableerror, NSDictionary * namespaces) {

                MCOIMAPNamespace * namespace = (imapSession.defaultNamespace !=nil) ? imapSession.defaultNamespace : [namespaces objectForKey:MCOIMAPNamespacePersonal];

    if(namespace){

     NSString *folername= [namespace componentsFromPath:imapFolder.path][0]; }}]; 

    //namespace 为空时则可能中文乱码

    b).邮件正文乱码

    NSString *htmlString  =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

     if(htmlString ==nil|| htmlString.length==0)  

    { htmlString=[[MCOMessageParser messageParserWithData:data] htmlBodyRendering];  //默认使用MC 的转码但很多外界邮箱发来无法解析 }

     2、添加附件

    附件分为inlineAttachments 和 新增attachments

    MCOAttachment *attachment=[MCOAttachment attachmentWithContentsOfFile:[attachmentModel fileName]];

    [attachment setUniqueID:[attachmentModel modelID]];

    [attachment setInlineAttachment:NO];//yes or no

    [messageBuilder addRelatedAttachment:inlineAttachment];

     [messageBuilder addAttachment:attachment];

    四、进一步了解

    mailcore2 api文档~~~

    理解OAuth 2.0

    libetpan 支持库~~

    相关文章

      网友评论

          本文标题:mailcore2 的使用与问题解决

          本文链接:https://www.haomeiwen.com/subject/hivewctx.html