in reply to How do I move mail msg to another folder in ECHANGE via a MAPI connection?

Are we supposed to guess what module you're using?
  • Comment on Re: How do I move mail msg to another folder in ECHANGE via a MAPI connection?

Replies are listed 'Best First'.
Re^2: How do I move mail msg to another folder in ECHANGE via a MAPI connection?
by boat73 (Scribe) on Feb 06, 2009 at 18:13 UTC
    My bad, I am using Win32:OLE, full script is below.
    #Option Explicit use strict; use warnings; use Win32::OLE qw(EVENTS); &application_newmail('<EXCHANGESERVER>', '<USERNAME>'); # sub application_newmail { my ($server, $alias) = @_; # connect to mailbox of CN $alias us +ing server $server my $mapikey = "$server\n$alias"; my $err; my $session = Win32::OLE->new(qw(MAPI.Session)) or die Win32::OLE- +>LastError(); # Try to logon with dynamic profile under current account. # This may need a reasonable current CDO on your machine. my $mapi = $session->Logon(undef,undef,undef,1,undef,undef,$mapike +y); return $err if $err = Win32::OLE->LastError(); # can be problematic. Therefore we iterate with GetFirst/GetNext ( +see below) # 'Check Inbox for messages and exit of none found my $messages = $session->Inbox->Messages() or return Win32::OLE->L +astError(); my $filter = $messages->Filter() or return Win32::OLE->LastError() +; $filter->{Unread} = 1; # Only unread messages $messages->Sort(); # default Sort is ASC on CdoPR_MESSAGE_DELIV +ERY_TIME return $err if $err = Win32::OLE->LastError(); # Gather Subject and Body for (my $msg = $messages->GetFirst(); $msg; $msg = $messages->GetN +ext()) { if($msg->ConversationTopic =~ /^Test Subject Text /){ print "Subject => " . $msg->ConversationTopic . "\n"; print "Body: ". $msg->Text."\n"; } # Next Item } $session->Logoff(); } # end sub
Re^2: How do I move mail msg to another folder in ECHANGE via a MAPI connection?
by Anonymous Monk on Feb 06, 2009 at 15:20 UTC
    Net::IMAP::Client says
    # copy messages between folders $imap->select('INBOX'); $imap->copy(\@msg_ids, 'Archive'); # delete messages ("Move to Trash") $imap->copy(\@msg_ids, 'Trash'); $imap->add_flags(\@msg_ids, '\\Deleted'); $imap->expunge;
    IMAP has no built in move command, when you move a message you actually copy it to another folder and then delete the original (mark as deleted, expunge).

      Although what you've said is correct I suspect it is irrelevant to the poster - since MAPI is different from IMAP.

      When it comes to processing IMAP folders, moving, copying, and scripting I put together a simple perl tool which does the job. It might be useful to some.

      Steve
      --
      Thanks, but I am using MAPI