On Fri, Jun 08, 2001 at 08:45:01AM +0200, Fernando wrote:
(...)
> 
> Estoy haciendo unos scripts para que me manden cosas a moviles y me
> gustar�a usar los aliases.
> 
> Alguna idea m�s, y esta vez esfuerzate un poco ;-)
> 
        Lo mejor: usa qmail y utiliza una direcci�n usuario-movil, en el
$HOME del usuario pones un .qmail-movil
as�
|preline /home/USUARIO/bin/resendmail -t [EMAIL PROTECTED]

        El resendmail es un programita que me hice que parte el correo
(recuerda la limitaci�n de SMS de 160 caracteres) y lo envia a la direcci�n
espec�ficada (hasta un m�ximo de cuatro cachos, para no saturar el movil)

        Lo env�o adjunto.

        Javi


#!/usr/bin/perl -w
# Lee la entrada estandard corta las cabeceras de correo
# y coge el subject y el mensaje reenviandolo a
# la direccion indicada

# Autor: Javier Fern�ndez-Sanguino Pe�a
# Distribuido bajo la GPL, ver www.gnu.org

use Getopt::Std;
getopts ('m:svht:');
if ( $opt_t and !$opt_h) {
        $send_to = $opt_t;
}
else {
        print <<EOM;
Uso: $0 [-hv] -t direccion de mail
Reenvia un mail
\t-h\testa ayuda
\t-t\tdirecci�n de correo
\t-s\tSaca la salida por standard input
\t-v\tMensajes de depuracion activados
EOM
        exit 1;
}
$myself= "jfs";
$myself = $opt_m if $opt_m;
my $mensaje = "";
my $subject = "";
my $mail_program ="/usr/bin/mail";
# M�ximo n�mero de octetos a enviar
$MAX_OCT = 90;
$MAX_PART = 5;;
$PRE_PART = " (p ";
$POST_PART = " )";


my $head = 1;
print "Leyendo cabeceras\n" if $opt_v;
while ($head) 
{
        $line = <STDIN>;
        chomp $line;
# Cabeceras
        if ( $line eq "" ) 
        { 
                $head = 0;
        }
        if ( $line =~ /^Subject:\s(.*)$/ ) {
                $subject = $1;
                print "El asunto es $subject\n" if $opt_v;
        }
        if ( $line =~ /^From:\s(.*)$/ ) {
                $origin = $1;
                print "El origen es $origin\n" if $opt_v;
        }
        if ( $line =~ /^[\w-]+:\s.*$/ or $line =~ /^\>/ )
        { # El resto de las cabeceras se eliminan
                print "No a�adir� al mensaje $line\n" if $opt_v;
        }
}
print "Leyendo cuerpo\n" if $opt_v;
while ( $line =<STDIN>) 
{
# Cuerpo
        chomp $line;
        # Y sino se guardan como mensaje
        $mensaje = $mensaje.$line."\n";
        print "A�adi $line al mensaje\n" if $opt_v;
}

if ( $origin !~ /movistar\.net/ and $origin !~ /DAEMON/ and  $origin !~ 
/$myself/) {

        $mensaje = "(de $origin) ".$mensaje;

        if (length $mensaje > $MAX_OCT)
        { print "Es necesario partir el mensaje\n" if $opt_v; }

        my $posicion = 0 ; my $part = 1;
        while ($posicion < length ($mensaje) and $part<$MAX_PART) {

                $partMensaje =substr ($mensaje, $posicion, $MAX_OCT);
                $partMensaje = $partMensaje.$PRE_PART.$part.$POST_PART;
                $posicion = $posicion + $MAX_OCT;
                $part ++;
# TODO: Deber�a comprobar que el mensaje + el PRE_PART y POST_PART# y el n�mero 
no se sale de MAX_OCT
# TODO: Poner un l�mite m�ximo al tama�o del mensaje (o decidir no poner
# PRE y POST si est� en ciertos m�rgenes)
                print "Voy a enviar con $mail_program a $send_to el mensaje: 
$subject\n" if $opt_v;
                if (! $opt_s ){
                        open (MAIL, "| $mail_program $send_to -s \"$subject\"") 
|| die ("No puedo abrir el programa de correo $mail_program: $!");
                        print MAIL $partMensaje;
                        close MAIL;
                }
                else {
                        print $partMensaje;
                        print "\n"
                }

# Para que no nos carge la cosa
                $subject = "" if $part >1;
        }

}

exit 0;

Responder a