Solved

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

Posted on 2009-04-05
3
739 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

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

This article will help to fix the below errors for MS Exchange Server 2013 I. Certificate error "name on the security certificate is invalid or does not match the name of the site" II. Out of Office not working III. Make Internal URLs and Externa…
Outlook for dependable use in a very small business   This article is about using the Outlook application (part of Microsoft Office) in a very small business, or for homeowners where dependability and reliability are critical requirements. This …
To add imagery to an HTML email signature, you have two options available to you. You can either add a logo/image by embedding it directly into the signature or hosting it externally and linking to it. The vast majority of email clients display l…
There are cases when e.g. an IT administrator wants to have full access and view into selected mailboxes on Exchange server, directly from his own email account in Outlook or Outlook Web Access. This proves useful when for example administrator want…

622 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