• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 766
  • Last Modified:

Save Active Mail Item in Outlook to Hard Disk (.MSG)

Hi there,

I am using a add-in-express that allows me to build add-ins for MS outlook.  It makes inserting buttons etc really easy in Outlook, but I still need to write the applied code.  I need some assistance to save the currently active mail item to my hard disk when a user clicks a my add-in button inside outlook.

Thanks,

Phillip
0
meneerroux
Asked:
meneerroux
  • 2
1 Solution
 
SteveBayCommented:
Here is an example of outlook automation that I posted some time back. Take a look and see if that gives you the start you need.
http://www.experts-exchange.com/Microsoft/Development/Microsoft_Programming/Q_23216275.html
0
 
Eddie ShipmanAll-around developerCommented:
Here's some code we use on our addin. We use Add-in Express, too, and it is a wonder to work with that tool
as it does tons of work for you.

uses  ..., Outlook2000;
 
 
var
  strTempFilePath: String;
  bSaved: Boolean;
  IMail: _MailItem;
  IExpl: _Explorer;
  ISel: Selection;
begin
  IExpl := FAddin.OutlookApp.ActiveExplorer();
  if Assigned(IExpl) then
  begin
    try
      try
        ISel := IExpl.Selection;
      except
        ISel := nil;
      end;
      if Assigned(ISel) then
      try
        if ISel.Count > 0 then
        begin
          ISel.Item(1).QueryInterface(IID__MailItem, IMail);
          if Assigned(IMail) then
          begin
            try
              strTempFilePath := IMail.Subject + '.msg';
              if FileExists(strTempFilePath) then
                SysUtils.DeleteFile(strTempFilePath);
              strDocDescription := IMail.Subject;
              IMail.SaveAs(strTempFileName, olMSG);
              bSaved := True;
              if not IMail.Sent then
              begin
                IMail.Send;
              end;
            finally
              IMail := nil;
            end;
          end;
        end;
      finally
        ISel := nil;
      end;
    finally
      IExpl := nil;
    end;
  end;
end;  

Open in new window

0
 
Eddie ShipmanAll-around developerCommented:
BTW, that code sends the email if it hasn't been sent, too. I forgot to take that out.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now