Mailkit -替换Html部分中的文本



感谢您的帮助。

我正在尝试使用Mailkit替换电子邮件模板中的文本。问题是,在Mailkit中至少有一个文本部分和一个Html部分。

我可以得到然后设置文本部分使用代码,如:var textPart = message.BodyParts.OfType<TextPart>().FirstOrDefault();

我可以使用var htmlPart = message.htmlBody但是,一旦我修改它,我不知道如何设置htmlpart的消息的htmlBody。

我的代码:

FileStream sr = new FileStream(fileLocation + "\" + fileName, FileMode.Open, FileAccess.Read);
message = MimeMessage.Load(sr);
sr.Close();             
//Get the text Part
var textPart = message.BodyParts.OfType<TextPart>().FirstOrDefault();

//Get the HtmlBody
var htmlPart = message.HtmlBody;
string regexPattern;
string regexReplacement;
Regex regexText;
foreach (var replaceSet in replaceArray)
{
regexPattern = "#" + replaceSet["Key"].ToString() + "#";
regexReplacement = (string)replaceSet["Value"].ToString();
//bool test = Regex.IsMatch(docText, regexPattern);
if (regexReplacement != "")
{
regexText = new Regex(regexPattern);
textPart.Text = regexText.Replace(textPart.Text, regexReplacement);
//Set, modify the text part
htmlPart = regexText.Replace(htmlPart, regexReplacement);
}
}

try
{
message.WriteTo(fileLocation + "\output\" + fileName);
}
catch (Exception Ex)
{
result = Ex.Message;
return BadRequest(result);
}```

像这样的东西可能会起作用:

// Get the text Part
var textPart = message.BodyParts.OfType<TextPart>().FirstOrDefault(x => x.IsPlain);
var htmlPart = message.BodyParts.OfType<TextPart>().FirstOrDefault(x => x.IsHtml);
string regexPattern;
string regexReplacement;
Regex regexText;
foreach (var replaceSet in replaceArray)
{
regexPattern = "#" + replaceSet["Key"].ToString() + "#";
regexReplacement = (string)replaceSet["Value"].ToString();
//bool test = Regex.IsMatch(docText, regexPattern);
if (regexReplacement != "")
{
regexText = new Regex(regexPattern);
textPart.Text = regexText.Replace(textPart.Text, regexReplacement);
//Set, modify the text part
htmlPart.Text = regexText.Replace(htmlPart.Text, regexReplacement);
}
}

最新更新