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;