| [reply] [Watch: Dir/Any] |
I am not allowed to download modules as a company policy !
| [reply] [Watch: Dir/Any] |
Are you allowed to copy and paste bits of code from the internet into your own code? Then copy some code (Ctl-A then Ctl-C on a windows box). Though I don't really see the difference between that and "downloading."
| [reply] [Watch: Dir/Any] |
You probably should appeal to your company in that case to make an exception, because there's not much use in anyone here reinventing the wheel for you.
MIME::Lite is a pure perl module, and doesn't really need to be installed, worst case scenario you could unpack the whole thing into the same directory as your cgi/script.
Does your company not allow any use of modules, even ones that you maintain?
| [reply] [Watch: Dir/Any] |
Then why would you be able to use any code on this site? Your company's policy sucks. The best reason to use perl at all is http://cpan.org
| [reply] [Watch: Dir/Any] |
Shell out.
http://www.unix.com/aix/36448-command-line-script-send-e-mail-html-body-binary-attachment.html | [reply] [Watch: Dir/Any] |
Thanks for the replies!
But i am using Windows ! How do i send attachments using SMTP in Windows? (sorry! i should have mentioned that earlier! )
| [reply] [Watch: Dir/Any] |
How do i send attachments using SMTP in Windows?
Regardless of what platform you are on, I'd recommend you read (and understand) the excellent How-To published by Corion A detailed How-To for locally installing modules. Install cpan;//MIME::Lite locally and use it. You'll be glad you did.
If perchance you cannot for some misbegotten reason install the module locally I'd suggest you copy/paste the pertinate pieces of code from that module (as others have suggested) appropriately and use that.
If that still doesn't work for you... give up.
Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg
| [reply] [Watch: Dir/Any] |
#!/usr/bin/perl
use warnings;
use strict;
# works but..................
# needs some taint checking if used with CGI
# You would be wise to consider what happens if you try:
# http://www.you.com/cgi-bin/sendattach.pl?`myonewordcommandwithoutarg
+s`
# and consider if you really want to give the whole world access to
# execute arbitrary commands on your server.
# Put the name of your file here
my $filename = shift || $0 ;
# Location of sendmail program on your host
my $mailprog = '/usr/sbin/sendmail';
# The email where you want the attachment to be sent to.
my $to = 'zentara@zentara.zentara.net';
# Who the message is from
my $from = 'zentara@zentara.zentara.net';
# Subject of the email.
my $subject = "Attachment!";
# Type your message here.
my $message = "This is an attachment.";
# Confirmation message that the email has been sent.
my $confirm_message = "The email and attachment has been sent!";
my $boundary = 'qwertry'.time;
######################################################
# Encode according to file extention.
my $content_type = "text/plain; charset=\"us-ascii\";"; #default
my $encoding;
if ( $filename =~ /\.gif$/i ){ $content_type =
"image/gif; name=\"$filename\"; $encoding = 'base64';"}
if ( $filename =~ /\.jpg$/i ){ $content_type =
"image/jpeg; name=\"$filename\"; $encoding = 'base64';"}
if ( $filename =~ /\.zip$/i ){ $content_type =
"application/zip; name=\"$filename\"; $encoding = 'base64';"}
if ( $filename =~ /\.html$/i || $filename =~ /\.htm$/i ){
$content_type = "text/html; charset=\"us-ascii\";";}
if ( $filename =~ /\.xls$/i ){
$content_type = "application/msexcel; charset=\"us-ascii
+\";";}
if ( $filename =~ /\.txt$/i
|| $filename =~ /\.dat$/i
|| $filename =~ /\.doc$/i
|| $filename =~ /\.pl$/i
|| $filename =~ /\.cgi$/i ){ $content_type =
"text/plain; charset=\"us-ascii\";";}
#############################################
# Get the attachment
my $b64image;
my @file;
if($encoding){
open( IMAGE, "$filename");
binmode(IMAGE);
undef $/;
my $rawimage = <IMAGE>;
$/ = "\n";
close IMAGE;
$b64image = &encode_base64($rawimage);
chomp $b64image;
}else{ # Doesn't need encoding. (Plain text type of document)
open( FILE, $filename );
@file = <FILE>;
close(FILE);
}
#############################################
# Send Email
open( MAIL, "| $mailprog $to" )
|| die("$0: Fatal Error! Cannot open sendmail:: $!\n");
print MAIL "Reply-to: $from\n";
print MAIL "From: $from\n";
print MAIL "To: $to\n";
print MAIL "Subject: $subject\n";
print MAIL "Mime-Version: 1.0\n";
print MAIL
"Content-type: multipart/mixed; boundary=\"======================_$bou
+ndary==_\"\n";
print MAIL"--======================_$boundary==_
Content-Type: text/plain; charset=us-ascii";
print MAIL "\n\n";
print MAIL "$message\n\n";
print MAIL "--======================_$boundary==_
Content-Type: $content_type\n";
if($encoding){ print MAIL "Content-Transfer-Encoding: $encoding\n";
print MAIL "Content-Disposition: inline; filename=\"$filename\"\n\
+n";
print MAIL $b64image;
}else{ print MAIL "Content-Disposition: inline; filename=\"$filename
+\"\n\n";
foreach my $line (@file) {
print MAIL "$line";
}
}
print MAIL "\n\n\n";
print MAIL "--======================_$boundary==_--";
close(MAIL);
#######################################
# Confirm Mail has been sent
print "Content-type: text/html\n\n";
print " $confirm_message\n\n";
#######################################
sub encode_base64
{
my $s = shift ;
my $r = '';
while( $s =~ /(.{1,45})/gs ){
chop( $r .= substr(pack("u",$1),1) );
}
my $pad=(3-length($s)%3)%3;
$r =~ tr|` -_|AA-Za-z0-9+/|;
$r=~s/.{$pad}$/"="x$pad/e if $pad;
$r=~s/(.{1,72})/$1\n/g;
$r;
}
| [reply] [Watch: Dir/Any] [d/l] |