我正在编写一个mvc 3应用程序,其部分功能是发送确认电子邮件以及各种其他电子邮件..我有正文用于存储在数据库表中的不同类型的电子邮件。获取值在桌子外面使用System.Net将它们放入电子邮件正文中.Mail根本不是问题...我需要做的是以某种方式将一些变量标记放在数据库表中的主体中,然后以某种方式解析当它放入电子邮件正文中找到变量标记并将正确的值放在它的位置时的正文文本...任何想法???我到目前为止的代码片段如下:
请记住,这将是一个相当大的身体,并且有一些地方值必须放弃..我正在考虑让它使用这样的东西:
长邮件正在^^名称^^已经被批准用于^^日期的^^ ^^位于^^位置的^^位置^^ ..
如果代码在遇到标有^^的变量时从代码中侵入文本,它会将正确的信息放在其位置......
Dim _content As email = db.emails.Where(Function(f) f.ref_name = "Confirmation")
Dim _body As String = _content.email_body.ToString
Dim SmtpServer As New SmtpClient()
Dim mail As New MailMessage()
mail.Subject = "Testing Confirmation"
mail.To.Add("developer@myemail.com")
mail.From = New MailAddress("myemail@myemail.com")
mail.Body = _body
答案 0 :(得分:1)
为什么不完全按照你刚才描述的那样做。在您的数据库中,您的电子邮件模板将类似于:
Dear [[Name]],
This is just a sample message.
然后你会创建一个类来进行替换:
Class EmailTemplateReplacer
Public Function DoTheReplace(ByVal emailTemplate as String) as String
return emailTemplate.Replace("[[Name]]", "whatever you want here")
EndFunction
EndClass
然后在你的代码中调用它:
Dim _content As email = db.emails.Where(Function(f) f.ref_name = "Confirmation")
Dim _body As String = _content.email_body.ToString
Dim replacer as New EmailTemplateReplacer()
_body = replacer.DoTheReplace(_body)
Dim SmtpServer As New SmtpClient()
Dim mail As New MailMessage()
mail.Subject = "Testing Confirmation"
mail.To.Add("developer@myemail.com")
mail.From = New MailAddress("myemail@myemail.com")
mail.Body = _body