我正在创建一个简单的Outlook 2016加载项,允许用户基于HTML模板创建新的邮件消息。
我创建了一个Ribbon
并添加了一个按钮。这是click事件处理程序代码:
Private Sub btnCreateMail_Click(sender As Object, e As RibbonControlEventArgs) Handles btnCreateMail.Click
Dim app As Application = Globals.ThisAddIn.Application
Dim currentAccount As Account = app.Session.Accounts.Item(1)
Dim mailItem = DirectCast(app.CreateItem(OlItemType.olMailItem), MailItem)
mailItem.SendUsingAccount = currentAccount
mailItem.To = currentAccount.DisplayName
mailItem.BCC = IdentifyContacts()
mailItem.BodyFormat = OlBodyFormat.olFormatHTML
mailItem.Importance = OlImportance.olImportanceLow
mailItem.HTMLBody = GetEmailBody()
mailItem.Subject = "Subject"
mailItem.Display(False)
End Sub
GetEmailBody()
函数负责读取模板并根据需要修改占位符:
Private Function GetEmailBody() As String
Dim strEmailBody As String
Const strTemplatePath = "C:\Users\umute\template.htm"
' Read the template
Using reader As New StreamReader(strTemplatePath)
strEmailBody = reader.ReadToEnd
strEmailBody = strEmailBody.Replace("{TodaysDate}", Date.Now.ToString("dddd dd MMM yyyy"))
strEmailBody = strEmailBody.Replace("{Name}", GetCurrentUser())
strEmailBody = strEmailBody.Replace("{Greeting}", DetermineGreeting())
reader.Close()
End Using
Return strEmailBody
End Function
上面的代码工作正常,但是,我不确定如何动态获取模板文件的路径,即没有进入包括C:\Users\
等的完整路径。这是因为我想发送带有加载项的模板文件,以避免依赖用户将其保留在本地硬盘中。
我知道在ASP.NET中可以使用Server.Mappath("~/file.html")
来完成此任务,但在为Outlook编写加载项时我不知道这相当于此。
答案 0 :(得分:0)
经过几个小时的尝试,我发现引用文件的正确方法是将其添加为resource
。
我在项目中添加了一个类型为Resource
的新项目,并为其添加了html模板。然后,像这样访问文件:
Dim strEmailBody As String = My.Resources.AllResources.Template