Closed seasonedtofu closed 4 months ago
The TextBody and HtmlBody properties follow a heuristic approach that is based on common MIME structures used by the most widely used mail client apps.
The problem with MIME is that there is no guaranteed way to always locate the 1 part that is the text body (or the html body) of a message. It's also very subjective.
I'll take a look at it, but I'll need an example message that illustrates the issue.
Here is what I get when I call MimeMessage.Body I am calling this on an email from outlook/owa Is there a correct way for calling TextBody on an email from outlook/owa?
Content-Type: text/html; charset="us-ascii"
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<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;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@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="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Test text body here<o:p></o:p></p>
</div>
</body>
</html>```
That's an html body. Where is the text body? :-)
(hint: there is no text body)
Describe the bug MimeMessage.TextBody is not returning the text body, I can see that it exists within the body itself if I call MimeMessage.Body The response I get is null
Platform (please complete the following information):
To Reproduce Steps to reproduce the behavior: Call .TextBody on a MimeMessage
Expected behavior To return the text body instead of null
Code Snippets