HTMLテンプレートに基づいて新しいメールメッセージを作成するための簡単なOutlook 2016アドインを作成しています。OutlookアドインのVSTOプロジェクトでHTMLファイルへのパスを動的に取得する方法
Ribbon
を作成し、ボタンを追加しました。
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のアドインを書くときにこれと同じことは分かりません。