Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- Copyright webforever.es (2007) PHP útil
- Este Procedimiento envía un email a través de phpmailer. Se usa de forma genérica para toda la Web.
- Parámetros necesarios:
- Plantilla valores 0 ó 1 (Determina si se usa plantilla con cabecera o no)
- Desde
- Para
- ConCopia
- ConCopiaOculta
- Asunto
- Contenido (HTML)
- Adjunto
- */
- function enviaremail($usar_plantilla, $desde, $para, $con_copia, $con_copia_oculta, $asunto, $contenido, $adjunto, $log = 0)
- {
- Global $conn;
- // Enviamos el email.
- mb_internal_encoding("UTF-8");
- require_once('class.phpmailer.php');
- require_once('class.smtp.php');
- $mail = new PHPMailer();
- $mail->CharSet = "UTF-8";
- $mail->SMTPDebug = 3;
- $mail->Debugoutput = 'variable';
- // Si No ponemos Desde, remitimos con el email de contacto.
- if ($desde == "")
- {
- $desde = comprobarlogico("sistema", "email_contacto", "idreg=1");
- $desde_name = comprobarlogico("email_conf", "nombre", "idreg=1");
- }
- else
- {
- $desde_name = "";
- }
- // Si No ponemos Para, enviamos al admon.
- if ($para == "")
- {
- $para = comprobarlogico("sistema", "email", "idreg=1");
- }
- //Si queremos enviar el email con la plantilla...
- If ($usar_plantilla == 1)
- {
- //Creamos una variable con la plantilla.
- $plantilla = file_get_contents(__RAIZ . "/plantillas/circular.htm");
- //Primero reemplazamos las variables de configuración del boletín
- $plantilla = Str_Replace("##texto_circular##", $contenido, $plantilla);
- $plantilla = str_replace("##nombre_dominio##", comprobarlogico("sistema", "nomdominio", "idreg=1"), $plantilla);
- $plantilla = str_replace("##nombre_logo##", substr(comprobarlogico("sistema", "logo", "idreg=1"), 0, -1), $plantilla);
- $plantilla = str_replace("##nombre_comercial##", comprobarlogico("sistema", "nomcom", "idreg=1"), $plantilla);
- $plantilla = str_replace("##direccion##", comprobarlogico("sistema", "direccion", "idreg=1"), $plantilla);
- $plantilla = str_replace("##localidad##", comprobarlogico("sistema", "localidad", "idreg=1"), $plantilla);
- $plantilla = str_replace("##cp##", comprobarlogico("sistema", "cp", "idreg=1"), $plantilla);
- $plantilla = str_replace("##provincia##", comprobarlogico("sistema", "provincia", "idreg=1"), $plantilla);
- $plantilla = str_replace("##telefono1##", comprobarlogico("sistema", "telef", "idreg=1"), $plantilla);
- $plantilla = str_replace("##telefono2##", comprobarlogico("sistema", "telef2", "idreg=1"), $plantilla);
- $plantilla = str_replace("##fax##", comprobarlogico("sistema", "fax", "idreg=1"), $plantilla);
- $plantilla = str_replace("##txt_lopd##", comprobarlogico("sistema", "txt_lopd", "idreg=1"), $plantilla);
- }
- $mail->IsSMTP();
- $mail->SMTPAuth = true;
- $mail->IsHTML(True);
- $mail->Host = trim(mb_strtolower(comprobarlogico("email_conf", "host", "idreg=1")));
- $mail->Username = trim(mb_strtolower(comprobarlogico("email_conf", "cuenta", "idreg=1")));
- $mail->Password = trim(comprobarlogico("email_conf", "pass", "idreg=1"));
- $mail->Port = trim(mb_strtolower(comprobarlogico("email_conf", "port", "idreg=1")));
- $mail->Subject = $asunto;
- //Remitente del email
- $mail->SetFrom($desde, $desde_name);
- If ($con_copia !== "")
- {
- $mail->AddCC($con_copia, "");
- }
- If ($con_copia_oculta !== "")
- {
- $mail->AddBcc($con_copia_oculta, "");
- }
- If ($usar_plantilla == 1)
- {
- $mail->Body = $plantilla;
- }
- Else
- {
- $mail->Body = $contenido;
- }
- //Adjuntamos archivos.
- If ($adjunto !== "")
- {
- //Creamos un array, se pueden adjuntar varios.
- $adjuntos = Explode(";", $adjunto);
- //Por cada uno vamos adjuntando.
- foreach($adjuntos as $adjunto)
- {
- If ($adjunto !== "" And File_Exists($adjunto))
- {
- $mail->AddAttachment($adjunto);
- }
- }
- }
- $mail->SMTPOptions = array(
- 'ssl' => array(
- 'verify_peer' => false,
- 'verify_peer_name' => false,
- 'allow_self_signed' => true
- )
- );
- /*
- Si en para, en vez de blanco o un email:
- Pasamos un 1, se hace mailing a todos os suscriptores
- Pasamos un 2, se envía los usuarios registrados
- Pasamos una cadena que empieza por gr, enviamos a un grupo.
- */
- If ($para == "1" Or $para == "2" or substr($para, 0, 2) == "gr~")
- {
- //En el para ponemos al admon
- $mail->AddAddress(comprobarlogico("sistema", "email", "idreg='1'"),comprobarlogico("email_conf", "nombre", "idreg='1'"));
- //Abrimos los suscriptores.
- If ($para == "1")
- {
- $sql = "select email from boletines_subcr";
- $inf = "Enviada circular a suscriptores con asunto: $asunto";
- }
- elseif ($para == "2")
- {
- $sql = "select email from usuarios where activo = 1 and habilitado = 1";
- $inf = "Enviada circular a usuarios activos con asunto: $asunto";
- }
- elseif (substr($para, 0, 2) == "gr")
- {
- $item = explode("~", $para);
- $sql = "select email from usuarios where activo = 1 and habilitado = 1 and id_grupo = " . $item[1];
- $inf = "Enviada circular a usuarios activos con grupo " . $item[1] . " y asunto: $asunto";
- }
- $tabla = $conn->query($sql) or die ("ERR0465: Error al tratar contenido.");
- $i = 1;
- //Si devuelve datos lo devolvemos
- If ($tabla->num_rows !== 0)
- {
- foreach ($tabla as $rs)
- {
- $mail->AddBcc($rs["email"], "");
- If ($i == 50 Or $i == $tabla->num_rows)
- {
- //Envío
- if(!$mail->Send())
- {
- $respuesta = "Error de envío: $mail->ErrorInfo";
- }
- else
- {
- $respuesta = True;
- }
- //Reinicio el contador.
- $mail->ClearBCCs();
- $i=0;
- }
- $i++;
- }
- info($inf);
- }
- }
- Else
- {
- $mail->AddAddress($para, "");
- if(!$mail->Send())
- {
- $respuesta = "Error de envío: " . $mail->ErrorInfo;
- }
- else
- {
- $respuesta = True;
- }
- }
- // Enviamos log si procede.
- if ($log == 1)
- {
- date_default_timezone_set('Europe/Madrid');
- $name_file = __RAIZ . "/data/temp/" . date('d-m-Y_h-i-s-A', time()) .'_.txt';
- $file = fopen($name_file, 'w' );
- fputs($file, $mail->smtp->smtp_errors);
- fclose($file);
- $mail->ClearBCCs();
- $mail->clearAddresses();
- $mail->clearCCs();
- $mail->AddAddress(comprobarlogico("sistema", "email", "idreg=1"),comprobarlogico("email_conf", "nombre", "idreg=1"));
- $mail->Subject = "Log de envío de email masivo.";
- $mail->Body = "Log de envío de email masivo.";
- $mail->AddAttachment($name_file);
- $mail->Send();
- unlink($name_file);
- info("Enviado log de envío masivo a administrador. Nombre fichero: $name_file");
- }
- $plantilla = "";
- Return $respuesta;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement