使用Mailcore2

时间:2015-10-12 16:06:52

标签: ios objective-c iphone mailcore2

我尝试使用以下代码

获取bodyHTML
MCOIMAPFetchContentOperation * op = [imapsession     fetchMessageAttachmentOperationWithFolder:folderName uid:uid partID:partId    encoding:MCOEncoding8Bit

我得到了一些带有一些不必要的额外代码的bodyHTML。我收到的其中一封邮件的Html是

   <div style="padding-bottom: 20px;"></div><div>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org=
<br/>/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
<br/>&lt;html xmlns=3D"http://www.w3.org/1999/xhtml"&gt;
<br/>&lt;head&gt;
<br/>&lt;meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8" /&gt;
<br/>&lt;meta name=3D"viewport" content=3D"width=3Ddevice-width" /&gt;
<br/>&lt;meta http-equiv=3D"X-UA-Compatible" content=3D"IE=3Dedge" /&gt;
<br/>&lt;/head&gt;
<br/>&lt;body style=3D"-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; =
<br/>background: #EEEEEE; color: #222222; font-family: 'Open Sans', Arial, sans-=
<br/>serif; font-size: 14px; font-weight: normal; line-height: 22px; margin: 0; =
<br/>min-width: 100%; padding: 0; text-align: left; width: 100% !important" bgco=
<br/>lor=3D"#EEEEEE"&gt;&lt;style type=3D"text/css"&gt;
<br/>body {
<br/>width: 100% !important; min-width: 100%; -webkit-text-size-adjust: 100%; -m=
<br/>s-text-size-adjust: 100%; margin: 0; padding: 0;
<br/>}
<br/>.ExternalClass {
<br/>width: 100%;
<br/>}
<br/>.ExternalClass {
<br/>line-height: 100%;
<br/>}
<br/>#backgroundTable {
<br/>margin: 0; padding: 0; width: 100% !important; line-height: 100% !important=
<br/>;
<br/>}
<br/>img {
<br/>outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; widt=
<br/>h: auto; max-width: 100%; float: left; clear: both; display: block;
<br/>}
<br/>body {
<br/>color: #222222; font-family: "Open Sans", Arial, sans-serif; font-weight: n=
<br/>ormal; padding: 0; margin: 0; text-align: left; line-height: 1.3;
<br/>}
<br/>body {
<br/>font-size: 14px; line-height: 22px;
<br/>}
<br/>a:hover {
<br/>color: #222222 !important;
<br/>}

我无法在网页视图中呈现它。但是当我尝试使用以下方法取出身体时

MCOIMAPFetchContentOperation * opr = [imapsession fetchMessageOperationWithFolder:folderName uid:uid urgent:YES]; 

我得到了正确的正文html,并且能够在webview上呈现它。我为上述方法得到的html是: -

<div style="padding-bottom: 20px;"></div><div><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content=
"text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title></title>
</head>
<body style=
"-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background: #EEEEEE; color: #222222; font-family: 'Open Sans', Arial, sans-serif; font-size: 14px; font-weight: normal; line-height: 22px; margin: 0; min-width: 100%; padding: 0; text-align: left; width: 100% !important"
bgcolor="#EEEEEE">
<style type="text/css">
/*<![CDATA[*/
body {
width: 100% !important; min-width: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; margin: 0; padding: 0;
}
.ExternalClass {
width: 100%;
}
.ExternalClass {
line-height: 100%;
}
#backgroundTable {
margin: 0; padding: 0; width: 100% !important; line-height: 100% !important;
}
img {
outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; width: auto; max-width: 100%; float: left; clear: both; display: block;
}
body {
color: #222222; font-family: "Open Sans", Arial, sans-serif; font-weight: normal; padding: 0; margin: 0; text-align: left; line-height: 1.3;
}
body {
font-size: 14px; line-height: 22px;
}
a:hover {
color: #222222 !important;
}

是否有任何解析器或任何其他方式来获取正文html。因为我必须使用partID来获取bodyHTML。

1 个答案:

答案 0 :(得分:5)

问题是在使用part获取消息时,它始终使用MCOEncoding8Bit进行编码,而不是我们必须提供我们在获取消息时获得的编码,如下所示。

for(MCOAbstractPart *abstractPart in multiAbstractPart.parts)
    {
MCOIMAPPart *part = (MCOIMAPPart *)abstractPart;
MCOIMAPFetchContentOperation * op = [imapsession     fetchMessageAttachmentOperationWithFolder:folderName uid:uid partID:partId    encoding:part.encoding];
}