从MIME编码的电子邮件字符串显示消息正文

时间:2019-08-06 15:06:59

标签: c# asp.net decoding mimekit

我们将停止使用Lyris ListManager帐户,但是我们仍然可以访问SQL数据库中的数据。客户仍然希望访问邮件档案,因此我们试图找到一种方法来将编码的电子邮件字符串带入数据库并在浏览器中以可读格式显示它们。一条消息的字符串示例:

--_004_D72176A059CDE746962E56C32F641BE3016734DDEDKCOEX2VKCOAD_
Content-Type: multipart/alternative;
    boundary="_000_D72176A059CDE746962E56C32F641BE3016734DDEDKCOEX2VKCOAD_"

--_000_D72176A059CDE746962E56C32F641BE3016734DDEDKCOEX2VKCOAD_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Testing.  Please reply back if successful.

Thank you


[cid:image001.jpg@01D36CBE.C035BE50]
Jane Doe | Web Content Manager
jdoe@email.com<mailto:jdoe@email.com>

--_000_D72176A059CDE746962E56C32F641BE3016734DDEDKCOEX2VKCOAD_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
    {font-family:Calibri;
    panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
    {font-family:Tahoma;
    panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
    {margin:0in;
    margin-bottom:.0001pt;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
    {mso-style-priority:99;
    color:blue;
    text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
    {mso-style-priority:99;
    color:purple;
    text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
    {mso-style-priority:99;
    mso-style-link:"Balloon Text Char";
    margin:0in;
    margin-bottom:.0001pt;
    font-size:8.0pt;
    font-family:"Tahoma","sans-serif";}
span.EmailStyle17
    {mso-style-type:personal-compose;
    font-family:"Calibri","sans-serif";
    color:windowtext;}
span.BalloonTextChar
    {mso-style-name:"Balloon Text Char";
    mso-style-priority:99;
    mso-style-link:"Balloon Text";
    font-family:"Tahoma","sans-serif";}
.MsoChpDefault
    {mso-style-type:export-only;
    font-family:"Calibri","sans-serif";}
@page WordSection1
    {size:8.5in 11.0in;
    margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
    {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Testing.&nbsp; Please reply back if succ=
essful.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Thank you,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Jane<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt;line-height:12.05pt;te=
xt-autospace:none">
<b><span style=3D"font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans=
-serif&quot;"><img width=3D"90" height=3D"36" id=3D"_x0000_i1025" src=3D"ci=
d:image001.jpg@01D36CBE.C035BE50"></span></b><b><span lang=3D"EN-AU" style=
=3D"font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;">=
<o:p></o:p></span></b></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-AU" style=3D"font-size:10.0pt;fo=
nt-family:&quot;Arial&quot;,&quot;sans-serif&quot;">Jane Doe
</span></b><span lang=3D"EN-AU" style=3D"font-size:10.0pt;font-family:&quot=
;Arial&quot;,&quot;sans-serif&quot;">|<b>
</b>Web Content Manager<br>
<a href=3D"mailto:jdoe@email.com">jdoe@email.com</a><=
/span><o:p></o:p></p>
</div>
</body>
</html>

--_000_D72176A059CDE746962E56C32F641BE3016734DDEDKCOEX2VKCOAD_--

--_004_D72176A059CDE746962E56C32F641BE3016734DDEDKCOEX2VKCOAD_
Content-Type: image/jpeg; name="image001.jpg"
Content-Description: image001.jpg
Content-Disposition: inline; filename="image001.jpg"; size=1735;
    creation-date="Mon, 04 Dec 2017 12:14:25 GMT";
    modification-date="Mon, 04 Dec 2017 12:14:25 GMT"
Content-ID: <image001.jpg@01D36CBE.C035BE50>
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMg
IyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAAkAFoDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0LTfG
dvrfh86npFu108f+vtd4WSI9+O/9e1UIfiJHNPHGNOceY4XPmjjJx6V4noeuX3h3U0vtNl8uVeGU
8rIv91h3FepWJsvGcUes6Knk3cMqG+sz/Cc53KenYn3+tZz5t4nLiFWXvU38jrrfxStx43u/Dn2R
la3txP5+/hs7eNuP9r1q14i8R2HhjS3vtRk2qOEQfekb+6orz7VPEVp4X+LOtaje7mUaeiRxoOZH
ITCj06dTWn4b8M3finUIvFPispIWAexsVOY4U6gn1Pf9T6DQ6jqvDOs3uu6Yt7eaW+nJJgxJJLud
l/vEYGPatmsHxR4ttPDEMIlilury5bZb2kAy8p/oPesCX4havpWy48QeFbqy09mANxHKJDHn+8AK
ANXUNfvbb4kaVosZj+xXVrJLICnzbhuxg/gKPh/r974j0O5utQMZljvJIV8tNo2rjH86yL+eK6+M
PhyeB1kil02V0dejAhiDVL4f67ZeHPAOo6hqMhSGPUZgAoyzsduFA7k0AemUVwTePfEAg+3/APCG
Xn9nY3bjMPN2/wB7ZjPTmrl/8StLtNL0nU4kaax1CUxvIW2m3wMtuGDkj0oA7GiuAuPiHrMFudSP
hG8GkAbvOeUCTZ/eKY4GOf610lr4x0K6tIbhdRhVZUVwrnDAEZwR2NAHgfhrwzeeKNVFnZjZGvzT
TsPlhT1Pv6DvXor3lnpy2mhaCNlhFMnmy/xXL7hkk9x/npXWQeCoNP8ADqaRpdy1rExzcShAzznu
Sf8APHFUofh3HDPHINRc+W4bHlDnBz61lU5npE48Sq0vdprTqZIsLbVPjHrllexLNbzaYqujdx8n
6+9VrC+vPhZrS6XqjyT+G7pz9muSMmAnsf6j8R3Fdnb+Flt/G934j+1szXFuIPI2cLjbzuz/ALPp
Wlq+kWeu6ZNYahEJYJRgjuD2IPYj1rU7DzjxG2pXHxdsW0u5s45pLAGzlugXiIO7O3Hc81sajo3j
rUNOubS81PQDbTRskmYHHykc89vrTI/hWh0mOxuNZuJTavvsZ1jCS2p7gHPKng44wRxinS/D/W9U
jFprni67udP6PDFCIzIPRmz/AI0AZOk6RcaD8QfCWm3kqTTW2mzoXjztIzIRjPPQgVyCmf8A4R3S
PLeJIv7eny04zEr/ACbS49Ov617B/wAIfAnifStWguHjj061NrHbld25SCASxOeM1TsPh5YQ+Frv
Qr6Z7uC4uHuBJtCNGxxjb15GOtAEX2L4hf8AQU0H/vxJXEan4VutDh0Wz1Ke1uY73XVlC2+dgDAB
hz9OldYvgLxFFALGLxpdrYAbQvkjzAvpuzmrz/DqySw0W0s7uaGPS7sXWXG9pm6nJyMZ9qAOk1dQ
2i3ysAQbeQEH/dNfLkZPlryegr6puoPtVpNBu2+bGybsZxkYrzBfgdCqgf27LwMf8ew/+KoA9Voo
ooAKKKKACiiigAooooAKKKKACiiigD//2Q==

--_004_D72176A059CDE746962E56C32F641BE3016734DDEDKCOEX2VKCOAD_--

根据我在网上看到的一些建议,我正在尝试使用MimeKit进行解析,但是我不确定如何正确使用它。理想情况下,我们希望能够仅捕获消息正文。我尝试了以下方法:

byte[] byteArray = Encoding.UTF8.GetBytes(row["body_"].ToString());
MemoryStream stream = new MemoryStream(byteArray);
var thisMssg = MimeMessage.Load(stream);
mssg.Text = thisMssg.TextBody;

但是,这将导致“无法解析邮件头”。

我也尝试过使用QuotedPrintableDecoder:

var decoder = new QuotedPrintableDecoder();
var buffer = Encoding.ASCII.GetBytes(row["body_"].ToString());
var output = new byte[decoder.EstimateOutputLength(buffer.Length)];
int used = decoder.Decode(buffer, 0, buffer.Length, output);
mssg.Text = System.Text.Encoding.ASCII.GetString(output, 0, used));

这至少会向浏览器输出一些半可读的内容,但是在消息的上方和下方仍然有标头和编码的文本。

感谢您的帮助。我在网上看到的大多数示例都涉及对电子邮件文件进行解码。在尝试将字符串转换为字节时,我可能做错了事,或者我可能对整个事情完全不了解。


更新:这对于某些消息非常有效,但是对于其他消息,HtmlBody和TextBody均为空白。我怀疑我使用了错误的编码或类似的东西。这是不返回任何内容的消息之一的标头+正文的示例:

Return-Path: <jane.doe@email.com>
Received: from z221.zixworks.com ([199.30.235.221]) by lyris.aosw.org with SMTP (Lyris ListManager WIN32 version 12.1.22); Mon, 17 Jun 2019 13:15:10 -0500
Received: from 127.0.0.1 (ZixVPM [127.0.0.1]) by Outbound.z221.zixworks.com (Proprietary) with SMTP id 66B33E18A0 for <groups@groups.org>; Mon, 17 Jun 2019 13:15:11 -0500 (CDT)
Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2056.outbound.protection.outlook.com [104.47.36.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by z221.zixworks.com (Proprietary) with ESMTPS id 77467E3E1C for <groups@groups.org>; Mon, 17 Jun 2019 13:15:07 -0500 (CDT)
Received: from BN8PR08MB5748.namprd08.prod.outlook.com (20.179.78.79) by BN8PR08MB6161.namprd08.prod.outlook.com (20.179.77.220) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.10; Mon, 17 Jun 2019 18:15:03 +0000
Received: from BN8PR08MB5748.namprd08.prod.outlook.com ([fe80::bdd9:7aa6:33e8:8c7f]) by BN8PR08MB5748.namprd08.prod.outlook.com ([fe80::bdd9:7aa6:33e8:8c7f%3]) with mapi id 15.20.1987.014; Mon, 17 Jun 2019 18:15:03 +0000
From: Jennifer Blosser <jane.doe@email.com>
To: test  List <groups@groups.org>
Subject: test subject
Thread-Topic: test subject
Thread-Index: AdUlODR9gfN51vIpRPKLoCMeLjIytQ==
Date: Mon, 17 Jun 2019 18:15:03 +0000
Message-ID:  <BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0@BN8PR08MB5748.namprd08.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is ) smtp.mailfrom=jane.doe@email.com;
x-originating-ip: [199.87.130.130]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 097c72d7-a379-49ac-dce6-08d6f34fb836
x-microsoft-antispam:  BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(49563074)(7193020);SRVR:BN8PR08MB6161;
x-ms-traffictypediagnostic: BN8PR08MB6161:
x-ms-exchange-purlcount: 4
x-microsoft-antispam-prvs:  <BN8PR08MB6161B55A933D7DEFA32FE4D69DEB0@BN8PR08MB6161.namprd08.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0071BFA85B
x-forefront-antispam-report:  SFV:NSPM;SFS:(10019020)(39860400002)(376002)(136003)(366004)(346002)(396003)(199004)(189003)(74316002)(7736002)(102836004)(99286004)(81166006)(66946007)(73956011)(81156014)(7696005)(2906002)(316002)(786003)(861006)(6506007)(66556008)(66476007)(66616009)(68736007)(26005)(8936002)(476003)(8676002)(76116006)(186003)(6916009)(99936001)(6306002)(55016002)(54896002)(6436002)(44832011)(478600001)(86362001)(64756008)(53936002)(5660300002)(733005)(54556002)(606006)(66446008)(33656002)(6116002)(256004)(25786009)(3846002)(790700001)(14454004)(66066001)(52536014)(71200400001)(71190400001)(486006)(9686003)(236005);DIR:OUT;SFP:1102;SCL:1;SRVR:BN8PR08MB6161;H:BN8PR08MB5748.namprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1;
received-spf: None (protection.outlook.com: vcuhealth.org does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info:  pg6USXqqMlMkBtJyhBsn236QA/k0rF3vQc1WC61WuHvtUFLFrPjeTUEQMYlbPZTU5UJKiehb0WLAKiT4R98gsNeqkREMejsaHxqIgNKTAyZbJ57JaHQmWu1rb9LY+gl+AhP+UXX2BM1WKGNxpc2ySYqeERX52xy/6cYrGPYPNoVvDryIGYBJslLwbyBh25k011jjA18szgKSKIhRu3QnN91aBu/7cTlDVY+/+f00xDMb62g4HWOVHzadxvXbmKv2duvVA1hzI/WTCWkJsg6XLXIBJ/gzip8lNGobi+cJ6a8VqY98CHd7z3vh8PE+4GgJv9UOUgrvW/q9Z6/TU8pfVtSh+5np5hhBRmjX80ZOpVzrjPrXufIe1uJ0hD1cIA4Jx4YcJOqQKsP5OQLAsBRj06/+VAKeswwGNbh2judAif0=
Content-Type: multipart/related; boundary="_004_BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0BN8PR08MB5748namp_"; type="multipart/alternative"
MIME-Version: 1.0
X-OriginatorOrg: vcuhealth.org
X-MS-Exchange-CrossTenant-Network-Message-Id: 097c72d7-a379-49ac-dce6-08d6f34fb836
X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jun 2019 18:15:03.6434 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: d21f3866-8fc6-4527-8622-cefa47fe9632
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: jane.doe@email.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR08MB6161
X-VPM-MSG-ID: 77fdc5a9-05b8-4e6c-8d21-912176d50a8c
X-VPM-HOST: vmvpm01.z221.zixworks.com
X-VPM-GROUP-ID: 994c5cd5-4e57-4cea-8f46-45e001662312
X-VPM-ENC-REGIME: Plaintext
X-VPM-IS-HYBRID: 0

    --_004_BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0BN8PR08MB5748namp_
Content-Type: multipart/alternative;
    boundary="_000_BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0BN8PR08MB5748namp_"

--_000_BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0BN8PR08MB5748namp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

SWON:  Please see information below about CEU offering from Be The Match in=
 July. Mercury SWON co-moderator:

Be sure to attend our upcoming webinar, Sickle Cell Disease: Exploring Trea=
tment Options and Psychosocial Care.<https://urldefense.proofpoint.com/v2/u=
rl?u=3Dhttps-3A__go.pardot.com_l_566592_2019-2D06-2D10_gmysfg-3Futm-5Fsourc=
e-3DListserv-5Fdet-26utm-5Fmedium-3Demail-26utm-5Fcampaign-3Dhp-5Fwebinar-5=
F3&d=3DDwMFAg&c=3DpOo6bKNCxsIK6eGC4MYY4A&r=3DM89Ut5RE0fhAI4OPWxaYquIrnvWNHf=
gw4xuTI66ezb0&m=3Dc_yC0-6_GJEEXNI3WxSORby7ZMI668MQiTaQiXl-lOs&s=3DRFAiVjmSs=
QOwCOOAFqGIdtAOvr2St6TOLjS19nfvU7M&e=3D>

message body here.


--_000_BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0BN8PR08MB5748namp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
    {font-family:"Cambria Math";
    panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
    {font-family:Calibri;
    panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
    {margin:0in;
    margin-bottom:.0001pt;
    font-size:11.0pt;
    font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
    {mso-style-priority:99;
    color:#0563C1;
    text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
    {mso-style-priority:99;
    color:#954F72;
    text-decoration:underline;}
span.EmailStyle17
    {mso-style-type:personal-compose;
    font-family:"Calibri",sans-serif;
    color:windowtext;}
.MsoChpDefault
    {mso-style-type:export-only;
    font-family:"Calibri",sans-serif;}
@page WordSection1
    {size:8.5in 11.0in;
    margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
    {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"#0563C1" vlink=3D"#954F72">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">message body here.</p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</td>
</tr>
</tbody>
</table>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>

--_000_BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0BN8PR08MB5748namp_--

--_004_BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0BN8PR08MB5748namp_
Content-Type: image/jpeg; name="image001.jpg"
Content-Description: image001.jpg
Content-Disposition: inline; filename="image001.jpg"; size=3521;
    creation-date="Mon, 17 Jun 2019 18:15:03 GMT";
    modification-date="Mon, 17 Jun 2019 18:15:03 GMT"
Content-ID: <image001.jpg@01D52517.0DFABF70>
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf
IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABAAQQDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDCop8K
CSeOM9HcKfxOK3dX8Pw2wR7F3ljubsQ25Y+2GU+4YflX1M6sYSSfU+PhSlNNroc/RXSTeGrW08QR
6bPNcmKeLfDKqAHIzuyD/un9Ko2ejRaito1vM6C7vTbr5oHyqFBycd+ahYim1ct4eonbqZNFb8Og
2N1fWqx3c0VpcRSsXmUBkMZIOccEVJD4ULa+mlzSuoW2Wad0XcVJ4wPUZx+FL6zT7j+rVOxzlT2X
/H/a/wDXdP8A0IVZuNMNrYTzSswlgvPsrJjj7pOf0qtZf8f9t/13T/0IVpzxlF2M+SUZJM97ooor
5Y+wCiiigAooooAKKSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA+flYqwZ
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

--_004_BN8PR08MB5748C0A8D6881BF572B3B3FE9DEB0BN8PR08MB5748namp_--

QuotedPrintableDecoder方法是否需要发挥作用?我已经审查过http://www.mimekit.net/docs/html/Working-With-Messages.htm,但希望不必手动遍历每个部分,仍然有一种方法可以仅捕获消息正文。

1 个答案:

答案 0 :(得分:1)

您使用MimeKit遇到的问题为您提供了有关未能解析标头的错误,这是由于您的字符串缺少消息标头。

您正在有效地做的是让MIME解析器解析一条从消息开始到一半的消息。您正在完成一项不可能完成的任务。

在解析之前,您需要将原始消息头与上述字符串组合在一起以产生原始(完整)消息源。

要么,要么您必须伪造原始消息头,以便正确解析内容。

大概您的数据库中有原始邮件头吗?

  

QuotedPrintableDecoder方法是否需要发挥作用?我已经审查过http://www.mimekit.net/docs/html/Working-With-Messages.htm,但希望不必手动遍历每个部分,仍然有一种方法可以仅捕获消息正文。

通常不需要自己使用任何低级解码器(或编码器)。

有多种获取消息正文的方法:

  1. 手动遍历MIME树(但通常不建议这样做),但是要真正做到这一点,您确实需要了解MIME的结构以及常见的邮件客户端将如何构造其消息。除非您对MIME有所了解,否则通常不建议这样做。 (难度:极端)
  2. 使用MimeIterator。在大多数情况下,除非您想手动遍历MIME树结构而不使用任何递归方法,否则我不会为这种方法所困扰。此类真正有用的地方是,如果您要实现更类似于IMAP服务器的东西。同样,您需要了解MIME如何工作才能真正利用它。有关如何使用此功能的简单示例,请参见文档。 (难度:极端)
  3. 使用MimeVisitor子类遍历MIME树结构。有关如何执行此操作的一个很好的示例,建议您看一下文档中示例中的HtmlPreviewVisitor类。如果您想像邮件客户端一样“呈现”消息,这可能是最好的处理方式。 (难度:中等)
  4. 如果您想要的只是获取邮件正文的快速而肮脏的方式,并且您不希望尝试以与Outlook或GMail相同的方式呈现邮件,则可以使用MimeMessage.TextBody和/或MimeMessage.HtmlBody属性。 (难度:简易模式)

如果我是你,我可能会选择TextBody / HtmlBody属性,并使用类似于示例文档中的HtmlPreviewVisitor类的属性。它们将是完成您想做的最简单的方法。

相关问题