Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re^4: Reading msg file

by monkee (Initiate)
on Oct 20, 2019 at 21:48 UTC ( #11107736=note: print w/replies, xml ) Need Help??

in reply to Re^3: Reading msg file
in thread Reading msg file

Hi, how could I tailor this code to print $filename only if the email body contains a certain keyword, such as "training"?

Replies are listed 'Best First'.
Re^5: Reading msg file
by Corion (Pope) on Oct 21, 2019 at 07:18 UTC

    You don't show any code, so it is hard for us to give you concrete advice.

    Please tell use where exactly you have problems:

    Do you have a problem finding the mail body?

    Do you have a problem finding the keyword ("training") in your case?

    Do you have a problem printing the filename on a condition?

    The best approach is to reduce your code to something relevant, self-contained and short ( and post that code. This allows us to reproduce your situation and give you concrete advice towards your next goal.

      I am having a problem printing the filename on a condition.

      I have successfully run the following code, which prints the entire two emails that are contained in the folder.

      <br>use strict; <br>use warnings; <br>use Email::Outlook::Message; <br> <br>for my $filename ( glob("C:/path/to/folder/with/email/files/*.msg" +) ) { <br> <br> my $msg = new Email::Outlook::Message $filename; <br> my $mime = $msg->to_email_mime; <br>print $mime->as_string; <br>}

      What I'd like PERL to do is read the file, search the body for the work "training", then print the name of the file only if the body contains the keyword.

      One email contains the keyword and the other doesn't. Let's say the file names are "email 1.msg" and "email 2.msg". The first contains the work "training" in the body, the other doesn't. I want PERL to print only "email 1.msg" because it contains the keyword.

      Seems I need to use an IF statement and =~/commit/ somewhere.

      Note: the larger application will be to search thousands of emails within a folder.

      Discipulus fixed code tags

        my $body = 'this is a test email. It contains the word training in its + second sentence.'; if( $body =~ /training/ ) { print "The body contains the word 'training'\n"; };

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11107736]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2020-09-24 04:45 GMT
Find Nodes?
    Voting Booth?
    If at first I donít succeed, I Ö

    Results (132 votes). Check out past polls.