Solved

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

Posted on 2009-04-05
3
723 Views
Last Modified: 2013-11-23
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
Comment
Question by:meneerroux
  • 2
3 Comments
 
LVL 14

Expert Comment

by:SteveBay
ID: 24077316
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
 
LVL 26

Accepted Solution

by:
EddieShipman earned 500 total points
ID: 24081243
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
 
LVL 26

Expert Comment

by:EddieShipman
ID: 24081246
BTW, that code sends the email if it hasn't been sent, too. I forgot to take that out.
0

Featured Post

Control application downtime with dependency maps

Visualize the interdependencies between application components better with Applications Manager's automated application discovery and dependency mapping feature. Resolve performance issues faster by quickly isolating problematic components.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Learn more about how the humble email signature can be used as more than just an electronic business card. When used correctly, a signature can easily be tailored for different purposes by different departments within an organization.
Finding original email is quite difficult due to their duplicates. From this article, you will come to know why multiple duplicates of same emails appear and how to delete duplicate emails from Outlook securely and instantly while vital emails remai…
Many of my clients call in with monstrous Gmail overloading issues with Outlook. A quick tip is to turn off the All Mail and Important folders from synching. Here is a quick video I made to show you how to turn off these and other folders in Gmail s…
CodeTwo Sync for iCloud (http://www.codetwo.com/sync-for-icloud?sts=6554) automatically synchronizes your Outlook 2016, 2013, 2010 or 2007 folders with iCloud folders available via iCloud Control Panel. This lets you automatically sync them with…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now