2016-10-27 3 views
0

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のアドインを書くときにこれと同じことは分かりません。

答えて

0

試してみた後、ファイルを参照する正しい方法は、resourceとして追加することです。

Resourceという新しい項目をプロジェクトに追加し、そのテンプレートにhtmlテンプレートを追加しました。次に、このようなファイルにアクセスしました:

 Dim strEmailBody As String = My.Resources.AllResources.Template 
関連する問題