#!/usr/bin/perl
 
# Script para enviar email desde HTML (formulario, etc.)
# Parametros:
# mailfrom    Direccion que envia el mail 
# mailto      Direccion que recibira el formulario: 
# subject     Subject (Ej. Formulario enviado por internet)
# redir       Pagina a la que quieres que se redireccione despues de terminar.
# silent      Imprimir mensaje o no

$| = 1;                 # Para que Perl no utilize su buffer

use CGI qw/:standard/;  # Usar el GCI.pm module
use strict 'vars';

my($admin_mail)  = "nick\@datacont.com";    # Para envair los errores

my ($mail_body, $params, $mailfrom, $mailto);
my ($redir) = param('redir');
my ($silent) = param('silent');
my ($refresh_time) = 3;
if ($silent) { $refresh_time = 0; }

if ($redir) { print header(-expires=>"+10m", -refresh=>"$refresh_time; URL=$redir"); }
else        { print header(-expires=>"+10m"); }
print start_html(-title=>"Mail-Form", 
                 -BGCOLOR=>'FFFFFF' );
print "\n\n";

### debug #####################################################################
#my ($key_form);
#foreach $key_form (param()) { print("$key_form\=",param($key_form),"<br>\n"); }
###############################################################################

$mailfrom=param('mailfrom');
$mailto=param('mailto');

if    (param('form_id') eq 'form-01') {
  $mail_body = param('nombre_padre')         . "," . 
               param('nacionalidad_padre')   . "," .
               param('id_padre')             . "," .
               param('domicilio_padre')      . "," .
               param('nombre_madre')         . "," .
               param('nacionalidad_madre')   . "," .
               param('id_madre')             . "," .
               param('domicilio_madre')      . "," .
               param('nombres_hijos')        . "," .
               param('edades_hijos')         . "," .
               param('destinos_viaje')       . "," .
               param('observaciones')        . "," .
               param('telefono')             . "," .
               param('email');
}
elsif (param('form_id') eq 'form-02') {
  $mail_body = param('solicitante')          . "," . 
               param('nacionalidad')         . "," .
               param('id')                   . "," .
               param('domicilio')            . "," .
               param('nombres_hijos')        . "," .
               param('edades_hijos')         . "," .
               param('destinos_viaje')       . "," .
               param('observaciones')        . "," .
               param('telefono')             . "," .
               param('email');
}
elsif (param('form_id') eq 'form-03') {
    $mail_body = param('nombre_vendedor_pn')          . "," .
    param('id_vendedor_pn')              . "," .
    param('estado_civil_vendedor_pn')    . "," .
    param('ocupacion_vendedor_pn')       . "," .
    param('nacionalidad_vendedor_pn')    . "," .
    param('nombre_conyuge_vendedor_pn')  . "," .
    param('id_conyuge_vendedor_pn')      . "," .
    param('domicilio_vendedor_pn')       . "," .
    param('razon_vendedor_pj')           . "," .
    param('ruc_vendedor_pj')             . "," .
    param('datos_inscrip_vendedor_pj')   . "," .
    param('repr_legal_vendedor_pj')      . "," .
    param('id_repr_legal_vendedor_pj')   . "," .
    param('nombre_comprador_pn')         . "," .
    param('id_comprador_pn')             . "," .
    param('estado_civil_comprador_pn')   . "," .
    param('ocupacion_comprador_pn')      . "," .
    param('nacionalidad_comprador_pn')   . "," .
    param('nombre_conyuge_comprador_pn') . "," .
    param('razon_comprador_pj')          . "," .
    param('domicilio_comprador_pn')      . "," .
    param('id_conyuge_comprador_pn')     . "," .
    param('datos_inscrip_comprador_pj')  . "," .
    param('repr_legal_comprador_pj')     . "," .
    param('id_repr_legal_comprador_pj')  . "," .
    param('telefono')                    . "," .
    param('email');
}
else {
  $mail_body = "Formulario enviado por Internet\n\n";

  # llenamos mail_body con todos los variables ...
  foreach $params (param())  {
    if (!($params eq 'mailfrom' || $params eq 'mailto' || 
          $params eq 'subject'  || $params eq 'redir'  ||
          $params eq 'Submit'   || $params eq 'silent' ))  {
      $mail_body .= "$params\=" . param($params) . "\n";
    }
  }
}


if (defined $mailto) { 
  if (!defined $mailfrom) { 
    $mailfrom = "POSTMASTER<postmaster\@" . get_url_domain() . ">";
  }
  send_mail($mailfrom, $mailto, param('subject'), $mail_body);

  if (!$silent) {
    print "<CENTER><H2>Formulario Enviado</H2>\n", 
        "<SMALL>! Gracias por utilizar nuestro servicio !</SMALL><BR>\n";
    if ($redir) {
      print "<BR><SMALL><A HREF=\"$redir\">&lt;Regresar&gt;</A></SMALL>";
    }
  }

}
else {
  print "<CENTER><H2>No hay destinatario definido!</H2>\n", 
        "<SMALL>Revise su formulario e intente de Nuevo<SMALL>\n";
}

print end_html;         # Fin de HTML
exit;

###############################################################################
### send_mail                                                               ###
###############################################################################

sub send_mail {         # Envia e-mail con los siguentes argumentos:
                        # $from Ej: Sender<nick@datacont.com> o solo e-mail
                        # $to   Ej: Receiver<nvelinski@yahoo.com> o solo e-mail
                        # $subject
                        # $message
                        
  my ($from, $to, $subject, $message) = @_;

  open(SENDMAIL, "|/usr/sbin/sendmail -oi -t -odq") or
                 die "No se puede abrir el programa de correo";

  print SENDMAIL "From: $from\n", "To: $to\n", "Subject: $subject\n\n";
  print SENDMAIL $message;
  close(SENDMAIL);

} # Fin de send_mail

###############################################################################
### get_url_domain                                                          ###
###############################################################################

sub get_url_domain {    # Devuelve el domain del script url
                        # Ej: http://www.log4web.com/cgi-bin/mailform.cgi
                        #     devuelve log4web.com
  my($absolute_url);

  $_ = url();
  $absolute_url = url(-absolute=>1);

  s/$absolute_url//;
  s/http:\/\/www.//;
  s/http:\/\///;

  return $_;
}
