#!/usr/bin/perl # $Id: mail2g3.pl 2 2006-04-27 11:15:02Z idefix $ # Program to read an email over stdin and send it with all attachments as fax # # call it with mail2g3.pl faxnumber # use Email::MIME; ############ Configure here ################## my($email)="idefix@fechner.net"; my($temp)="/tmp"; my($path)="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"; my($a2ps)="PATH=$path /usr/local/bin/a2ps"; my($convert)="PATH=$path /usr/local/bin/convert"; my($sendfax)="/usr/local/bin/faxspool"; my($debug)=0; my($debugFile)="/tmp/fax.log"; ################# END ######################## open(STDOUT, ">>$debugFile"); open(STDERR, ">>$debugFile"); my($faxnumber)=$ARGV[0]; print("Faxnumber: $faxnumber\n") if($debug); exit 1 if(!$faxnumber); my($message)=""; foreach() { $message.=$_; } my($parsed)=Email::MIME->new($message); my @parts = $parsed->parts; my(@filenames); foreach(@parts) { my($content_type)=$_->content_type(); my($decoded)=$_->body(); my($non_decoded)=$_->body_raw(); my($filename)=$_->filename(1); $filename=$temp."/".$filename; my($contentTypeSmall)=$content_type=~/^(.+?);/; print("Content-type: $contentTypeSmall\n") if($debug); open(FH,">$filename") || die("Cannot create the file $filename\n"); print FH $decoded; close(FH); if($contentTypeSmall eq "text/plain") { print("Convert text to ps\n") if($debug); system("$a2ps -R --columns=1 --rows=1 -B <$filename >$filename.ps"); push @filenames,"$filename.ps"; unlink($filename); }elsif($contentTypeSmall eq "application/pdf") { print("Keep file: $filename\n") if($debug); push @filenames,$filename; }elsif($contentTypeSmall eq "image/tiff") { print("Keep file: $filename\n") if($debug); push @filenames,$filename; }else{ print("Unkown format: $contentTypeSmall skipping...\n"); push @filesToDelete,$filename; } } my($counter)=0; foreach(@filenames) { push @filesToDelete, $temp."/".$$."-$counter.g3"; print("$convert -page a4 -density 204x196 -quality 100 $_ $temp/".$$."-$counter.g3\n") if($debug); system("$convert -page a4 -density 204x196 -quality 100 $_ $temp/".$$."-$counter.g3"); $counter++; } print("Send Fax...\n") if($debug); print("$sendfax -f $email $faxnumber $temp/$$-*\n") if($debug); system("$sendfax -f $email $faxnumber $temp/$$-*"); print("Delete files\n") if($debug); foreach(@filesToDelete) { print("Delete $_\n") if($debug); unlink($_); } foreach(@filenames) { print("Delete $_\n") if($debug); unlink($_); }