Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17


uuencode problem with perl on hpux

Posted on 2003-11-12
Medium Priority
Last Modified: 2008-01-09
First, I have read through a number of previous posts here about uuencode and perl. As soon as I finish writting this, I'm going to explore MIME::Lite ,  but I'm curious as to the problem I'm having with uuencode right now.

 Now keep in mind that I'm having to work with HPUX 11i and perl 5.005_03 (long story about not upgrading) and I'm still relatively new to perl.
I have a text file generated out of some previous sql/perl mix.  Lets call it  dataout.txt.
The gist of the problem is this:
outside of perl, I can use the following code    uuencode dataout.txt dataout.txt  | mailx -s "extracted data" email.to@sendto.company.com
and it works fine.

However, when I use either of the following in a perl script:

system(`uuencode dataout.txt dataout.txt | mail "email.to\@sendto.company.com"`);
exec("uuencode dataout.txt dataout.txt | mail email.to\@sendto.company.com");

I still get an email with an attachement, but the attachment does not contain the data as it does if I use the same command from the unix command line.

As a 4 year old likes to say,  "Why?" .

Thank you in advance!

Mark Nelson
Question by:Mark_Nelson
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
  • 3
  • 2
LVL 20

Expert Comment

ID: 9733166
You've changed two things at once, so it's hard to say which of the two is responsible for the problem. Outside of perl, you used the 'mailx' mailer, which is old and primitive, but still has a few smarts about internet mail. Inside of perl, you were using the 'mail' (sometimes known as 'binmail') mailer, an even older and more primitive mailer.

What happens if you use mailx from Perl?

Is it that the attachment is not there at all, is it empty, or is it simply not being recognized as an attachment by the recipient's mailer?

MIME::Lite is a better way to do this.

Author Comment

ID: 9733255

The same thing happens if mail or mailx is used.

Actually, the email comes with an attachment of the proper name but a zero byte lengtht.
This is a text message and needs to come as an attachment, not in the body of the message.

I'm futzing with MIME::Lite now.  Just got the package installed and typed out a test script that failed ;).

LVL 20

Accepted Solution

jmcg earned 150 total points
ID: 9733379
I'm afraid all I can tell you is that piping uuencode directly into mailx (or mail) will place the encoded lines in the body of the message. Neither mailer sets a proper MIME header specifying Content-Type or boundaries. Some mail programs recognize this old way of sending binary files and fix things up so it _looks like_ there's an attachment, but it's not really following the MIME structure.

To create a MIME message you need to use a mailer that a) understands how to handle an attachment (mutt and, I think, some versions of pine allow you specify a file for an attachment as a command-line option) or b) allows you to specify all of the relevant mail headers as part of the input (such as when mailing via "sendmail -t" or "qmail-inject").

MIME::Lite should do everything correctly as far as setting up the mail message. It still can be tricky to get the mail posted if there are restrictions on using the default methods that MIME::Lite knows about.

But I don't see why you should be getting different results from running the same command line with "system" or "exec" in Perl.

Author Comment

ID: 9766067
as a final note to this saga, I was never able to get PERL to properly send the txt file as an attachment.
I tried the system(`uuencode.......)
I tried MIME::Lite as well.

However, when I wraped PERL in KSH and called the PERL code to do the data manipulation, then when it was done, return to KSH, I was able to get KSH to run the uuncode line just fine.


Mark Nelson
LVL 20

Expert Comment

ID: 9766178
Sometimes a problem takes too long to solve and you gotta get by with something that you realize is makeshift, but it _works_.

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
Checking the Alert Log in AWS RDS Oracle can be a pain through their user interface.  I made a script to download the Alert Log, look for errors, and email me the trace files.  In this article I'll describe what I did and share my script.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

730 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