How To: Add Outlook Ribbon Button That Generates A Document From Emails
I needed a functionality that allows me to generate Word documents out of email items managed in my Outlook 2010. The scenario would be:
- Search emails using Outlook 2010 instant search.
- Copy related items to a designated folder
- Press a button
- Work document is generated including all email items in the designated folder
I used this resource to get started – Building and deploying an Outlook 2010 Add-in (part 1 of 2). Part 2 is here - Building and deploying an Outlook 2010 Add-in (part 2 of 2).
After completing the steps of adding a button to a ribbon, I added a code to the button click event handler that collects all email items in the specific folder (3rd one under the Inbox folder).
Here is the code that runs:
MAPIFolder inBox = (MAPIFolder)e.Control.Context.Application.ActiveExplorer().Session.GetDefaultFolder
(OlDefaultFolders.olFolderInbox);
try
{
MAPIFolder inBoxfolder = inBox.Folders[3];
e.Control.Context.Application.Application.ActiveExplorer().CurrentFolder = inBoxfolder;
e.Control.Context.Application.Application.ActiveExplorer().CurrentFolder.Display();
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= inBoxfolder.Items.Count; i++)
{
if (inBoxfolder.Items[i] is PostItem)
{
PostItem pi = (PostItem)inBoxfolder.Items[i];
sb.Append("<h1>");
sb.Append(pi.Subject);
sb.Append("</h1>");
sb.Append(pi.HTMLBody);
}
}
using (StreamWriter sw = new StreamWriter(@"C:\GeneratedFile.doc"))
{
sb.Replace("<html>", "");
sb.Replace("</html>", "");
sw.Write(sb.ToString());
Process.Start(@"C:\GeneratedFile.doc");
}
}
NTOE: This code is less than optimal and should be improved for its quality. But it can perfectly get you started if you have the same goal as I did in first place.