Sponsored Content
Top Forums Shell Programming and Scripting perl check email script not seeing attachment Post 302450665 by Ikon on Friday 3rd of September 2010 11:27:57 AM
Old 09-03-2010
perl check email script not seeing attachment

The following script does pull the sender and Subject of the email but it is not seeing the attachment name. I know there is an attachment.

I line in red SHOULD pull the filename out.

this line is in the message:
Code:
Content-Disposition: attachment;   filename="Picture 243.jpg"

Code:
#!/usr/bin/perl

use Mail::POP3Client;

  $pop = new Mail::POP3Client( USER     => "someusername",
                               PASSWORD => "somepasswot",
                               HOST     => "mail.somedomain.com" ) || die "Error";
    print "Messages:".$pop->Count()."\n";
  for ($i = 1; $i <= $pop->Count(); $i++) {
    foreach ( $pop->HeadAndBody( $i ) ) {
      #/^(From|Subject):\s+/i and print $_, "\n";
    /^From:\s+/i and @from = split(/:/);
    /^Subject:\s+/i and @subject = split(/:/);
    /^Content-Disposition: attachment;\s+/i and @filename = split(/=/);
    }
    print "From: $from[1]\n";    
    print "Subject: $subject[1]\n";
    print "Attachement: $filename[1]\n";
    print ;
    print "\n*************************************************\n";
  }
$pop->close;

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

script that will send and email attachment

I'm looking for a sample of some code that will take the output from a file and generate an email that will include that text as an attachment. the script is in the borne shell. any help? (2 Replies)
Discussion started by: davels
2 Replies

2. Shell Programming and Scripting

Script to check processes and send an email

I searched through the forum and couldn't quite find what I was looking for. I have a script that looks for a process "DW" to be running. If it is not it will email a notice to an account. I would like to add the functionality to have it also email a seperate notice if there is more that one of... (1 Reply)
Discussion started by: heprox
1 Replies

3. AIX

Email with Attachment

Hi, I have .ksh file which internally calls a .sql file. This sql file writes a file with the result. I am using the following command to send email with the result file as attachment uuencode file.txt file.txt | mail -s "Subject" abc@abc.com. When i run the .ksh file i get a message you... (5 Replies)
Discussion started by: piyushprabhakar
5 Replies

4. Shell Programming and Scripting

Email Attachment Script

Hello, I created the following script but i'm trying to figure out why i keep getting an error. #!/usr/bin/perl -w use strict; use warnings; my $baseDir = '/export/home/omcadmin/bin'; my $attachment = "$baseDir/message.txt"; my $from = 'xxx@xxx.com'; my $to = 'xxx@xxx.com'; my... (10 Replies)
Discussion started by: xmaverick
10 Replies

5. Shell Programming and Scripting

Sending email and attachment file using Perl

I am trying to send an email body of information and also attachment using perl script, but I am only able to send the body but not an attachment. is there around it without using "use MIME::Lite;" module. $user = "bataf\@xyz.com"; $subjectt = "mail from perl"; open(MAIL, "| mailx -s... (1 Reply)
Discussion started by: bataf
1 Replies

6. Shell Programming and Scripting

Check email and download attachment

Hi, I had search the web for a script to download email, but failed to found one. I need a bash or perl script that will check for email originating from an address such as john@rambo.com and download the .zip attachment into a specified folder. Anyone could assist or give me some... (1 Reply)
Discussion started by: mynullvoid
1 Replies

7. Solaris

Sent an email attachment, but the attachment is empty

I'm trying to send a .zip file from my unix box to my work email (email client outlook) The file name that I'm trying to sent is sites.zip and this is how I do it: uuencode sites.zip | mailx -s "testing" myname@mydomain.com When I open the .zip, the zip is empty. Looking around the we, I... (17 Replies)
Discussion started by: amb1s1
17 Replies

8. Shell Programming and Scripting

Help....script check status if see something then send email

autorep -m bogus Machine Name Max Load Current Load Factor O/S Status ___________ ________ ___________ ______ ________ ______ bogus --- --- 1.00 Sys Agent Online Status ______ Online Offline Missing Unqualified The "Status" always "Online". I like create a script execute run... (6 Replies)
Discussion started by: dotran
6 Replies

9. UNIX for Dummies Questions & Answers

Send email attachment using Operating System Script(UNIX) in Oracle Alerts

Good Day Kindly assist: I am creating an Alert that will notify supervisors of staff members who are due for probation report. I am using Operating System Script(Unix) as source.I have already developed the script. Now the challenge is if there are 3 employee records then the alert... (2 Replies)
Discussion started by: nosi27
2 Replies

10. Shell Programming and Scripting

How to check email with attachment received or not from UNIX shell script?

Hello Guys, Here is the requirement!! I want to check the mail with attachment received or not through unix scripting. And send an notification email when mail with attachment already received. Any thoughts on this is much appreciated!! Regards, Harry (0 Replies)
Discussion started by: dharry2017
0 Replies
TNEF(3) 						User Contributed Perl Documentation						   TNEF(3)

NAME
Convert::TNEF - Perl module to read TNEF files SYNOPSIS
use Convert::TNEF; $tnef = Convert::TNEF->read($iohandle, \%parms) or die Convert::TNEF::errstr; $tnef = Convert::TNEF->read_in($filename, \%parms) or die Convert::TNEF::errstr; $tnef = Convert::TNEF->read_ent($mime_entity, \%parms) or die Convert::TNEF::errstr; $tnef->purge; $message = $tnef->message; @attachments = $tnef->attachments; $attribute_value = $attachments[$i]->data($att_attribute_name); $attribute_value_size = $attachments[$i]->size($att_attribute_name); $attachment_name = $attachments[$i]->name; $long_attachment_name = $attachments[$i]->longname; $datahandle = $attachments[$i]->datahandle($att_attribute_name); DESCRIPTION
TNEF stands for Transport Neutral Encapsulation Format, and if you've ever been unfortunate enough to receive one of these files as an email attachment, you may want to use this module. read() takes as its first argument any file handle open for reading. The optional second argument is a hash reference which contains one or more of the following keys: output_dir - Path for storing TNEF attribute data kept in files (default: current directory). output_prefix - File prefix for TNEF attribute data kept in files (default: 'tnef'). output_to_core - TNEF attribute data will be saved in core memory unless it is greater than this many bytes (default: 4096). May also be set to 'NONE' to keep all data in files, or 'ALL' to keep all data in core. buffer_size - Buffer size for reading in the TNEF file (default: 1024). debug - If true, outputs all sorts of info about what the read() function is reading, including the raw ascii data along with the data converted to hex (default: false). display_after_err - If debug is true and an error is encountered, reads and displays this many bytes of data following the error (default: 32). debug_max_display - If debug is true then read and display at most this many bytes of data for each TNEF attribute (default: 1024). debug_max_line_size - If debug is true then at most this many bytes of data will be displayed on each line for each TNEF attribute (default: 64). ignore_checksum - If true, will ignore checksum errors while parsing data (default: false). read() returns an object containing the TNEF 'attributes' read from the file and the data for those attributes. If all you want are the attachments, then this is mostly garbage, but if you're interested then you can see all the garbage by turning on debugging. If the garbage proves useful to you, then let me know how I can maybe make it more useful. If an error is encountered, an undefined value is returned and the package variable $errstr is set to some helpful message. read_in() is a convienient front end for read() which takes a filename instead of a handle. read_ent() is another convient front end for read() which can take a MIME::Entity object (or any object with like methods, specifically open("r"), read($buff,$num_bytes), and close ). purge() deletes any on-disk data that may be in the attachments of the TNEF object. message() returns the message portion of the tnef object, if any. The thing it returns is like an attachment, but its not an attachment. For instance, it more than likely does not have a name or any attachment data. attachments() returns a list of the attachments that the given TNEF object contains. Returns a list ref if not called in array context. data() takes a TNEF attribute name, and returns a string value for that attribute for that attachment. Its your own problem if the string is too big for memory. If no argument is given, then the 'AttachData' attribute is assumed, which is probably the attachment data you're looking for. name() is the same as data(), except the attribute 'AttachTitle' is the default, which returns the 8 character + 3 character extension name of the attachment. longname() returns the long filename and extension of an attachment. This is embedded within a MAPI property of the 'Attachment' attribute data, so we attempt to extract the name out of that. size() takes an TNEF attribute name, and returns the size in bytes for the data for that attachment attribute. datahandle() is a method for attachments which takes a TNEF attribute name, and returns the data for that attribute as a handle which is the same as a MIME::Body handle. See MIME::Body for all the applicable methods. If no argument is given, then 'AttachData' is assumed. EXAMPLES
# Here's a rather long example where mail is retrieved # from a POP3 server based on header information, then # it is MIME parsed, and then the TNEF contents # are extracted and converted. use strict; use Net::POP3; use MIME::Parser; use Convert::TNEF; my $mail_dir = "mailout"; my $mail_prefix = "mail"; my $pop = new Net::POP3 ( "pop3server_name" ); my $num_msgs = $pop->login("user_name","password"); die "Can't login: $!" unless defined $num_msgs; # Get mail by sender and subject my $mail_out_idx = 0; MESSAGE: for ( my $i=1; $i<= $num_msgs; $i++ ) { my $header = join "", @{$pop->top($i)}; for ($header) { next MESSAGE unless /^from:.*someone@somewhere.net/im && /^subject:s*important stuff/im } my $fname = $mail_prefix."-".$$.++$mail_out_idx.".doc"; open (MAILOUT, ">$mail_dir/$fname") or die "Can't open $mail_dir/$fname: $!"; # If the get() complains, you need the new libnet bundle $pop->get($i, *MAILOUT) or die "Can't read mail"; close MAILOUT or die "Error closing $mail_dir/$fname"; # If you want to delete the mail on the server # $pop->delete($i); } close MAILOUT; $pop->quit(); # Parse the mail message into separate mime entities my $parser=new MIME::Parser; $parser->output_dir("mimemail"); opendir(DIR, $mail_dir) or die "Can't open directory $mail_dir: $!"; my @files = map { $mail_dir."/".$_ } sort grep { -f "$mail_dir/$_" and /$mail_prefix-$$-/o } readdir DIR; closedir DIR; for my $file ( @files ) { my $entity=$parser->parse_in($file) or die "Couldn't parse mail"; print_tnef_parts($entity); # If you want to delete the working files # $entity->purge; } sub print_tnef_parts { my $ent = shift; if ( $ent->parts ) { for my $sub_ent ( $ent->parts ) { print_tnef_parts($sub_ent); } } elsif ( $ent->mime_type =~ /ms-tnef/i ) { # Create a tnef object my $tnef = Convert::TNEF->read_ent($ent,{output_dir=>"tnefmail"}) or die $Convert::TNEF::errstr; for ($tnef->attachments) { print "Title:",$_->name," "; print "Data: ",$_->data," "; } # If you want to delete the working files # $tnef->purge; } } SEE ALSO
perl(1), IO::Wrap(3), MIME::Parser(3), MIME::Entity(3), MIME::Body(3) CAVEATS
The parsing may depend on the endianness (see perlport) and width of integers on the system where the TNEF file was created. If this proves to be the case (check the debug output), I'll see what I can do about it. AUTHOR
Douglas Wilson, dougw@cpan.org perl v5.18.2 2012-07-23 TNEF(3)
All times are GMT -4. The time now is 09:56 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy