Письмо, отправленное из веб-приложения, содержит >> в пунктах с маркером - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть веб-приложение, которое уведомляет клиентов о состоянии их приложения по электронной почте. Стандартные сообщения электронной почты загружаются через веб-страницу пользователя. И хранится в таблице базы данных SQL сервера. Затем веб-служба электронной почты считывает содержимое сообщения из таблицы db, преобразует его в строку и запускает сообщение электронной почты.

System.Data.SqlClient.SqlDataReader Msg = RC.dbTable("EmailMessage", parm);
                if (Msg == null)
                {
                    returnString = "Error Sending Email->" + RC.ErrorMessage("Error Getting Standard Email Message->");
                }
                else
                {
                    if (Msg.Read())
                    {
                        msg = Msg["MessageContent"].ToString().Replace("[", "<").Replace("]", ">");
                        topic = Msg["MessageTopic"].ToString();
                    }
                    Msg.Close();
                }

На этот раз мне пришлось добавить несколько точек с маркером в свою электронную почту, чтобы я создал электронную почту сообщение в слове, сохранить его как HTML файл и загрузить его на веб-страницу. Сообщение электронной почты отлично отображается в любом браузере.

Hello,

Please reply to xyz@abc.com with the following:

‐      a paper

‐      a pen

‐      a file cover

This needs to be completed.

Stay Safe.

enter image description here
Но, когда я проверил функциональность электронной почты, я получаю письмо, подобное этому:

Hello,

Please reply to xyz@abc.com with the following:

‐      >>a paper

‐      >>a pen

‐      >>a file cover

This needs to be completed.

Stay Safe.

enter image description here Я не понимаю, почему сообщение электронной почты имеет >> в тексте маркеров. Ниже приведен фрагмент файла HTML.

<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=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 15">
<meta name=Originator content="Microsoft Word 15">
<link rel=File-List href="Hello_files/filelist.xml">
<link rel=themeData href="Hello_files/themedata.thmx">
<link rel=colorSchemeMapping href="Hello_files/colorschememapping.xml">
<style>
</style>
</head>

<body lang=EN-US link="#0563C1" vlink="#954F72" style='tab-interval:.5in'>

<div class=WordSection1>

<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Verdana",sans-serif'>Hello, <br>
<br>
Please reply to </span><a
href="mailto:xyz@abc.com"><span style='font-size:12.0pt;font-family:
"Verdana",sans-serif'>xyz@abc.com</span></a><span style='font-size:
12.0pt;font-family:"Verdana",sans-serif'> with the following:<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Verdana",sans-serif'><o:p>&nbsp;</o:p></span></p>

<p class=MsoListParagraphCxSpFirst style='margin-bottom:8.0pt;mso-add-space:
auto;text-indent:-.25in;line-height:105%;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-CA style='font-size:12.0pt;line-height:105%;font-family:"Verdana",sans-serif;
mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana;mso-ansi-language:
EN-CA'><span style='mso-list:Ignore'>&#8208;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span lang=EN-CA style='font-size:12.0pt;
line-height:105%;font-family:"Verdana",sans-serif;mso-ansi-language:EN-CA'>a paper<o:p></o:p></span></p>

<p class=MsoListParagraphCxSpMiddle style='margin-bottom:8.0pt;mso-add-space:
auto;text-indent:-.25in;line-height:105%;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-CA style='font-size:12.0pt;line-height:105%;font-family:"Verdana",sans-serif;
mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana;mso-ansi-language:
EN-CA'><span style='mso-list:Ignore'>&#8208;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span lang=EN-CA style='font-size:12.0pt;
line-height:105%;font-family:"Verdana",sans-serif;mso-ansi-language:EN-CA'>a pen<o:p></o:p></span></p>

<p class=MsoListParagraphCxSpMiddle style='margin-bottom:8.0pt;mso-add-space:
auto;text-indent:-.25in;line-height:105%;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-CA style='font-size:12.0pt;line-height:105%;font-family:"Verdana",sans-serif;
mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana;mso-ansi-language:
EN-CA'><span style='mso-list:Ignore'>&#8208;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span lang=EN-CA style='font-size:12.0pt;
line-height:105%;font-family:"Verdana",sans-serif;mso-ansi-language:EN-CA'>a file cover<o:p></o:p></span></p>

<p class=MsoListParagraphCxSpLast style='margin-top:0in;margin-right:0in;
margin-bottom:8.0pt;margin-left:38.7pt;mso-add-space:auto;line-height:105%'><span
lang=EN-CA style='font-size:12.0pt;line-height:105%;font-family:"Verdana",sans-serif;
mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Verdana",sans-serif'>This needs to be completed.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:auto'><span style='font-size:12.0pt;
font-family:"Verdana",sans-serif'>Stay Safe.<o:p></o:p></span></p>

</div>

</body>

</html>

1 Ответ

2 голосов
/ 29 апреля 2020

О. MS Word был использован для создания html. Хм. Да, это всегда делает немного беспорядка со всеми его сумасшедшими таблицами стилей и массой дополнительных тегов и другой лишней структуры. Вы, вероятно, получили бы хороший результат, просто очистив html до минимума, который вам необходим, что выглядит очень просто - возможно, 3 p и ul, но я думаю, что проблема возникает из-за этого:

msg = Msg["MessageContent"].ToString().Replace("[", "<").Replace("]", ">")

Плюс эти значения в html:

lfo1'><![if !supportLists]><span
...
<![endif]>

При выполнении этой замены будет сгенерировано HTML, содержащее <!<endif>>, что определенно недействительно html. То, что браузер может видеть его и не задушить, не означает, что программа электронной почты будет вести себя так же; вы кладете мусор и вывозите мусор

Очистите HTML:

<html>
<body style='font-face: sans-serif'>
<p>Hello,</p>

<p>Please reply to <a href="mailto:xyz@abc.com">xyz@abc.com</a> with the following:</p>
<ul>
<li>a paper</li>
<li>a pen</li>
<li>a file cover</li>
</ul>
<p>This needs to be completed.</p>
<p>Stay Safe.</p>
</body>
</html>

И не делайте эту замену квадратных скобок угловыми. Это напрашивается на неприятности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...