#!/usr/bin/perl -w
BEGIN
{
# Declaramos la ruta de ubicacion del modulo 'comun'.
@INC=(@INC,"/var/www/cgi-bin/comun");
}
use masivo_html;
use CGI; # carga el modulo CGI.pm
use strict;
use Mail::Sender;
use vars qw( $table0 $nc $region $nombre $usuario $JSCRIPT1 $email $area $dbh1 $desc $table0 %FORM $act $f_act %mm $rs_nuV $fetch_nuV);
if((trim($FORM{opcion}) eq 'Enviar')){ &enviar(); }
&form();
exit;
sub enviar {
my ($ip,$num, $sql,$remite,$asunto,$fichero4,$fichero3,$fichero2,$fichero,$mensaje,$para,@para);
# Comprobamos si el usuario nos ha pasado parametro
$remite = $FORM{remite};
$para = $FORM{destinatarios};
$asunto = $FORM{asunto};
$fichero = $FORM{fichero};
$mensaje = $FORM{mensaje};
my @para= split(/,/, $para);
$ip = remote_host();
($rs_nuV,$fetch_nuV)=record(db=>"correosmasivos",
tabla=>"registros",
campos=>"MAX(num_consec)",
alias=>"maximo",
visible=>'no');
while($fetch_nuV->()){}
$$rs_nuV{maximo}=$$rs_nuV{maximo}+1;
$num=$$rs_nuV{maximo};
$sql="INSERT INTO registros (num_consec,remite,destinatarios,asunto,mensaje,archivo,ip) values ($$rs_nuV{maximo},'$FORM{remite}','$FORM{destinatarios}','$FORM{asunto}','$FORM{mensaje}','$FORM{fichero}','$ip')";
&ejecuta("correosmasivos",$sql);
# Leemos el fichero para la IMAGEN 1
my $fh = upload('fichero');
my $fichero_contenidos;
my $fichero_type = "";
if ( defined $fh ) {
binmode $fh;
while ( <$fh> ) {
$fichero_contenidos .= $_;
}
$fichero_type = uploadInfo($fichero)->{'Content-Type'};
}
# ----------------------------------
# Preparamos el correo electroniico
# ----------------------------------
foreach $para (@para) {
my $msg = Mail::Sender->new({
smtp => '10.10.0.2',
from => $remite.'@'.$dominio,
to => $para.'@'.$dominio,
subject => $asunto,
multipart => 'mixed',
});
$msg->OpenMultipart({});
# si se adjunta una imagen se muestra con exito pero si no se adjunta, aparece una "X"
$msg->Body({
ctype => 'text/html',
disposition => 'NONE',
msg =>"
<html><body>
<p align=center>
<IMG src='cid:img1'>
</p>
<p align=justify>
<br><font face=verdana size=2 color=#666666>$mensaje</font>
</p></body></html>"
});
# IMAGEN 1
if ( defined $fh ) {
$msg->Part({
ctype => $fichero_type,
description => 'Adjunto',
encoding => 'Base64',
disposition => "inline; filename=$fichero; \r\nContent-ID: <img1>",
msg => $fichero_contenidos,
});
}
$msg->Close();
}
&msj("","su ha enviado el correo con exito<br>”,"<button name=\"opc\" class = \"Bsbttn\" type=\"button\" value=\"Cerrar\" onClick=\"window.close();\"> Cerrar </button>");
exit;
}
sub form {
my ($table3,$table00,$rsReg,$fetchReg,@valX,%labX,@valX2,%labX2,$i,$table4,$table2);
# -------------------
# POP UP SOLICITANTES
# -------------------
$i = 0;
($rsReg,$fetchReg) =
record(db=>"correos",
tabla=>"cuentas",
condicion=>"order by nombre",
campos=>"nombre,cuenta",
visible=>"no");
while($fetchReg->())
{
$valX[$i] = trim($rsReg->{cuenta});
$labX{$valX[$i]} = trim($rsReg->{nombre});
$i++;
#&msj($rsReg->{cuenta});
}
# ----------------------------------------------- #
# - INICIO DE FORMULARIO EN PANTALLA PRINCICPAL - #
# ----------------------------------------------- #
$table4 = new HTML::Table(-rows=>10,-cols=>1,-bgcolor=>"#ffffeb",-padding=>0, -spacing=>0,-width=>600);
$table4->setCell(2,1,
"<tr>
<td width=600 align=center>
<br>
<p align=left>
<font face=verdana size=2>
<b>De:</b></font> "
.textfield(-id=>'remite',-name=>'remite',-size=>15,-maxlength=>100)." \@midominio.com <br>
<font face=verdana size=2>
<b>Para:</b></font> "
.textfield( -name=>'destinatarios', -id=>'destinatarios', -size=>50, -labels=>{%labX})." \@midominio.com <br>
"
.popup_menu(-name=>'para',-values=>[@valX],-labels=>{%labX},-multiple=>'multiple',-size=>4)."<br>
"
.button(-name=>'Agregar Usuarios', -id=>'Agregar', -onclick=>'javascript:document.formu.destinatarios.value=add_values(document.formu.para);')."<br><br>
<font face=verdana size=2>
<b>Asunto:</b></font> "
.textfield(-id=>'asunto',-name=>'asunto',-size=>60,-maxlength=>100)."
<font face=verdana size=2>
<br><br>Adjuntar Imagenes en el cuerpo del correo</font><br>
(Puedes adjuntar archivos JPG, GIF, BMP)<br><br>
"
.filefield(-name=>'fichero',-default=>'Nombre del fichero a enviar',-size=>30,-maxlength=>80)."<br>
<font face=verdana size=2>
<br><br>"
.submit(-name=>'opcion',-value=>'Enviar')."
</p></td></tr>
");
#Creamos la tabla que contiene las 2 tablas anteriores.
$table00 = new HTML::Table(-rows=>5,-cols=>1,-border=>0,-bgcolor=>"#ffffeb",-width=>600,-spacing=>-10,-padding=>10);
$table00->setCell(6,1, $table4->getTable);
#Creamos la tabla que contiene las 2 tablas anteriores.
$table0 = new HTML::Table(-rows=>1,-cols=>1,-border=>0,-bgcolor=>"#ffffeb",-width=>600,-align=>"center",-spacing=>0, -padding=>0);
$table0->setCell(1,1, $table00->getTable);
$table0->setColAlign(1,"CENTER");
print header;
&js();
&print_cabeza(''); # esta funcion se encuentra en el (pm)
print start_multipart_form(-action=>'mail.cgi',
-name=>'formu',
-id =>'formu',
);
$table0->print;
end_form();
}
sub js {
$JSCRIPT=<<EOT;
function add_values(objetoSelect)
{
var opt_selected = new Array();
var index = 0;
for (var i=0;i < objetoSelect.options.length;i++)
{
if (objetoSelect.options[i].selected)
{
opt_selected[index] = objetoSelect.options[i].value;
index++;
}
}
return opt_selected;
}
EOT
}