Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Adding custom header to Mail::Outlook::Message

by maskull (Novice)
on Mar 12, 2017 at 16:09 UTC ( [id://1184343]=perlquestion: print w/replies, xml ) Need Help??

maskull has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to send Outlook 2013 message using Mail::Outlook module http://search.cpan.org/~duncan/Mail-Outlook-0.25/lib/Mail/Outlook.pm. I also need to set a custom message property to mark its sensitivity level, called X-ICCategory.
use strict; use warnings; use Win32::OLE; use Win32::OLE::Const 'Microsoft Outlook'; use Mail::Outlook; my $outlook = new Mail::Outlook(); my $folder = $outlook->folder('Drafts'); my $message = $outlook->create(); my %hash = ( To => 'user@mail.com', Subject => 'Blah Blah Blah', Body => 'Yadda Yadda Yadda', ); $message->save();
Now, if the message was an OLE object I'd try something like:
my $doc = Win32::OLE->GetObject($message); my $property = 'X-ICCategory'; my $value = '2'; my $docprops = $doc->CustomDocumentProperties(); unless (defined ($doc->CustomDocumentProperties($property))) { $docprops->Invoke('Add', { Name => $property, LinkToContent => 0, Type => 4, Value => $value, }); } $doc->CustomDocumentProperties($property)->{Value} = $value;
But it is a MailItem so I assume it has to be something like this solution here: http://www.outlookcode.com/threads.aspx?forumid=5&messageid=27515 I just have no idea how to translate this to Perl.

Replies are listed 'Best First'.
Re: Adding custom header to Mail::Outlook::Message
by poj (Abbot) on Mar 12, 2017 at 18:22 UTC

    I don't have Outlook set up to test this but a couple of ideas to try

    use strict; use warnings; use Win32::OLE 'in'; use Win32::OLE::Const 'Microsoft Outlook'; use Mail::Outlook; my %hash = ( To => 'user@mail.com', Subject => 'Blah Blah Blah', Body => 'Yadda Yadda Yadda', ); my $outlook = new Mail::Outlook(); my $folder = $outlook->folder('Drafts'); my $message = $outlook->create(%hash); my $doc = $message->{'message'}; # type olText=1 my $uprops = $doc->UserProperties; my $newprop1 = $uprops->Add('X-ICCategory',1); $newprop1->{'value'} = 2; for my $prop (in $uprops){ printf "%s %s\n",$prop->{'name'},$prop->value; } my $PropName = 'http://schemas.microsoft.com/mapi/string/' .'{00020386-0000-0000-C000-000000000046}/' .'X-ICCategory'; my $pa = $doc->PropertyAccessor; $pa->SetProperties($PropName, 2 );
    poj
      Thanks. Sadly that gives me this:
      X-ICCategory 2 Can't call method "SetProperties" on an undefined value at .. line ..

        What does running this give

        use strict; use Win32::OLE; use Mail::Outlook; my $mail = new Mail::Outlook(); my $message = $mail->create(); my $Outlook = $message->{'outlook'}; print " Perl $] Win32::OLE Version ${Win32::OLE::VERSION} Mail::Outlook ${Mail::Outlook::VERSION}; Outlook $Outlook->{'Version'}\n";

        This is what I have

        Perl               5.016001
        Win32::OLE Version 0.1709
        Mail::Outlook      0.25;
        Outlook            14.0.0.7172
        
        poj

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1184343]
Approved by johngg
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2024-04-26 00:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found