[英]Replacing multiple strings in a .oft Outlook email template not working as expected
我正在尝试替换 Outlook 电子邮件模板文件 (.oft) 中的多个值。
我确实在提交之间的某个时间点进行了这项工作,但不完全确定是什么导致了我的问题。
据我了解,HTMLBody 需要保留格式。
问题是只有 .Replace 的最后两个实例在起作用
void BtnGenerateClick(object sender, EventArgs e)
{
Outlook.Application emailApp = new Outlook.Application();
Outlook.MailItem createTemplate = emailApp.CreateItemFromTemplate("C:\\Users\\USERNAME\\Documents\\OFTFiles\\test-template.oft") as Outlook.MailItem;
createTemplate.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
createTemplate.Subject = "Test Email sent " + '\u0040' + " " + tbTime.Text + " on " + currentDate;
/* START Replace Text from Numeric Up Down Value Property */
var changed0 = createTemplate.HTMLBody.Replace("{0}",nud0.Value.ToString());
createTemplate.HTMLBody = changed0;
var changed1 = createTemplate.HTMLBody.Replace("{1}",nud1.Value.ToString());
createTemplate.HTMLBody = changed1;
var changed2 = createTemplate.HTMLBody.Replace("{2}",nud2.Value.ToString());
createTemplate.HTMLBody = changed2;
var changed3 = createTemplate.HTMLBody.Replace("{3}",nud3.Value.ToString());
createTemplate.HTMLBody = changed3;
var changed4 = createTemplate.HTMLBody.Replace("{4}",nud4.Value.ToString());
createTemplate.HTMLBody = changed4;
var changed5 = createTemplate.HTMLBody.Replace("{5}",nud5.Value.ToString());
createTemplate.HTMLBody = changed5;
var changed6 = createTemplate.HTMLBody.Replace("{6}",nud6.Value.ToString());
createTemplate.HTMLBody = changed6;
/* END Replace Text from Numeric Up Down Value Property */
/* START Replace Text from Textbox Text Property */
var changed7 = createTemplate.HTMLBody.Replace("{7}",tb7.Text);
createTemplate.HTMLBody = changed7;
var changed8 = createTemplate.HTMLBody.Replace("{8}",tb8.Text);
createTemplate.HTMLBody = changed8;
var changed9 = createTemplate.HTMLBody.Replace("{9}",tb9.Text);
createTemplate.HTMLBody = changed9;
var changed10 = createTemplate.HTMLBody.Replace("{10}",tb10.Text);
createTemplate.HTMLBody = changed10;
var changed11 = createTemplate.HTMLBody.Replace("{11}",tb11.Text);
createTemplate.HTMLBody = changed11;
/* END Replace Text from Textbox Text Property */
createTemplate.Display(createTemplate);
}
数字上下
nud0 到 nud5 是默认的 numericUpDowns,最大值为 9999。nud6 已修改为具有 1 个小数位,最大值为 100。
文本框
tb7 到 tb11 都是默认值,限制为 15 个字符。 使用的字符包括 AZ 和 0-9。
我已经复制了你项目的一部分。
但它正在起作用。
我的项目和 .oft 文件上传到Google Drive 。
您可以运行和测试。
如果您犯了任何愚蠢的错误,请检查我的解决方案。
如果还是不行,那么...
终极解决方案:
可能是因为 Visual Studio 的愚蠢缓存或其他问题。
解决尝试:
Replace函数返回一个新字符串,其中使用提供的未指定的比较类型,将当前实例中所有出现的指定字符串替换为另一个指定字符串。 我建议检查用于Replace
函数的实际值并使用比较类型,该类型指定了Compare(String, String)
和Equals(Object)
方法的某些重载要使用的区域性、大小写和排序规则。
另一方面是您没有从Replace
函数返回格式良好的 HTML 字符串。 因此,它无法更新消息正文。 您想要设置什么值而不是占位符?
由于您的占位符看起来像string.Format
的从零开始的索引占位符,您可以只使用string.Format
。 你会从中获得更好的性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.