Convert incoming email from plain text to HTML
-
10-12-2019 - |
Question
I have a list that accepts emails and creates list items out of them.
The issue I'm facing is that if someone emails the list using plain text, the formatting showing up in a list item's multi-line text column is barely readable (no newlines or anything).
I want to be able to translate plain text into HTML so that the multi-line rich text field reflects its formatting, in C#.
I've tried the HttpUtility.HtmlEncode
but the formatting is still lost.
Solution
public string parseText(string text, bool allow)
{
//Create a StringBuilder object from the string input parameter
StringBuilder sb = new StringBuilder(text);
//Replace all double white spaces with a single white space and
sb.Replace(" ", " ");
//Check if HTML tags are not allowed
if (!allow)
{
//Convert the brackets into HTML equivalents
sb.Replace("<", "<");
sb.Replace(">", ">");
//Convert the double quote
sb.Replace("\"", """);
}
//Create a StringReader from the processed string of the StringBuilder
StringReader sr = new StringReader(sb.ToString());
StringWriter sw = new StringWriter();
//Loop while next character exists
while (sr.Peek() > -1)
{
//Read a line from the string and store it to a temp variable
string temp = sr.ReadLine();
//write the string with the HTML break tag
//Note here write method writes to a Internal StringBuilder
//object created automatically
sw.Write(temp + "<br>");
}
//Return the final processed text
return sw.GetStringBuilder().ToString();
}
Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange