我正在准备HTML格式的电子邮件。图像必须捆绑在多部分mime中,并重写引用。模板HTML在一个文件中,我写了一个正则表达式来查找文件名:
using (var sr = new StreamReader("ApproveUserTemplate.html"))
html = sr.ReadToEnd();
var matches = Regex.Matches(html, "\\s*img\\s+src\\s*=[\"'](.*.\\w{3})[\"']");
表达式匹配,括号表示将捕获一个组。因此,对于包含<img src="blort.png" />
的文件,我得到一个包含三个组的匹配项,其中match.Groups [1] .Value返回字符串&#34; blort.png&#34;。
到目前为止,这么好,但我从msdn文档中看不到的是你如何去替换值。在这种情况下,我想用blort.png
替换cid:blortguid
(我构造了一个名称表,将文件名映射到标识链接资源的GUID)。
我不能在单个操作中进行批量替换,因为我需要遍历匹配,逐步构建名称表,构造LinkedResource实例并将它们添加到消息AlternateView对象中。在创建资源并分配ContentIds之前,替换值甚至不存在。
有一种获取匹配集合的机制。我希望迭代这个,做相关的管理员,计算替换值并在该特定匹配上执行替换。
如何在特定的Match实例上执行替换?
如果这不是受支持的模型,那么展示Match对象集合的重点是什么?
答案 0 :(得分:0)
我得出的结论是,我在问题中描述的迭代用法是不可能的。
然而,对于所描述的情况,使用两个通道有一些优点:
这样做可以直接使用多次链接的资源的单个副本。