Advertisement
Guest User

Untitled

a guest
Apr 4th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.30 KB | None | 0 0
  1. <?php
  2. /*
  3. Copyright webforever.es (2007) PHP útil
  4. Este Procedimiento envía un email a través de phpmailer. Se usa de forma genérica para toda la Web.
  5.  
  6. Parámetros necesarios:
  7.  
  8. Plantilla valores 0 ó 1 (Determina si se usa plantilla con cabecera o no)
  9. Desde
  10. Para
  11. ConCopia
  12. ConCopiaOculta
  13. Asunto
  14. Contenido (HTML)
  15. Adjunto
  16. */
  17. function enviaremail($usar_plantilla, $desde, $para, $con_copia, $con_copia_oculta, $asunto, $contenido, $adjunto, $log = 0)
  18. {
  19. Global $conn;
  20.  
  21. // Enviamos el email.
  22. mb_internal_encoding("UTF-8");
  23. require_once('class.phpmailer.php');
  24. require_once('class.smtp.php');
  25.  
  26. $mail = new PHPMailer();
  27. $mail->CharSet = "UTF-8";
  28. $mail->SMTPDebug = 3;
  29. $mail->Debugoutput = 'variable';
  30.  
  31. // Si No ponemos Desde, remitimos con el email de contacto.
  32. if ($desde == "")
  33. {
  34. $desde = comprobarlogico("sistema", "email_contacto", "idreg=1");
  35. $desde_name = comprobarlogico("email_conf", "nombre", "idreg=1");
  36. }
  37. else
  38. {
  39. $desde_name = "";
  40. }
  41.  
  42. // Si No ponemos Para, enviamos al admon.
  43. if ($para == "")
  44. {
  45. $para = comprobarlogico("sistema", "email", "idreg=1");
  46. }
  47.  
  48. //Si queremos enviar el email con la plantilla...
  49. If ($usar_plantilla == 1)
  50. {
  51. //Creamos una variable con la plantilla.
  52.  
  53. $plantilla = file_get_contents(__RAIZ . "/plantillas/circular.htm");
  54.  
  55. //Primero reemplazamos las variables de configuración del boletín
  56.  
  57. $plantilla = Str_Replace("##texto_circular##", $contenido, $plantilla);
  58.  
  59. $plantilla = str_replace("##nombre_dominio##", comprobarlogico("sistema", "nomdominio", "idreg=1"), $plantilla);
  60. $plantilla = str_replace("##nombre_logo##", substr(comprobarlogico("sistema", "logo", "idreg=1"), 0, -1), $plantilla);
  61. $plantilla = str_replace("##nombre_comercial##", comprobarlogico("sistema", "nomcom", "idreg=1"), $plantilla);
  62. $plantilla = str_replace("##direccion##", comprobarlogico("sistema", "direccion", "idreg=1"), $plantilla);
  63. $plantilla = str_replace("##localidad##", comprobarlogico("sistema", "localidad", "idreg=1"), $plantilla);
  64. $plantilla = str_replace("##cp##", comprobarlogico("sistema", "cp", "idreg=1"), $plantilla);
  65. $plantilla = str_replace("##provincia##", comprobarlogico("sistema", "provincia", "idreg=1"), $plantilla);
  66. $plantilla = str_replace("##telefono1##", comprobarlogico("sistema", "telef", "idreg=1"), $plantilla);
  67. $plantilla = str_replace("##telefono2##", comprobarlogico("sistema", "telef2", "idreg=1"), $plantilla);
  68. $plantilla = str_replace("##fax##", comprobarlogico("sistema", "fax", "idreg=1"), $plantilla);
  69. $plantilla = str_replace("##txt_lopd##", comprobarlogico("sistema", "txt_lopd", "idreg=1"), $plantilla);
  70. }
  71.  
  72. $mail->IsSMTP();
  73. $mail->SMTPAuth = true;
  74. $mail->IsHTML(True);
  75. $mail->Host = trim(mb_strtolower(comprobarlogico("email_conf", "host", "idreg=1")));
  76. $mail->Username = trim(mb_strtolower(comprobarlogico("email_conf", "cuenta", "idreg=1")));
  77. $mail->Password = trim(comprobarlogico("email_conf", "pass", "idreg=1"));
  78. $mail->Port = trim(mb_strtolower(comprobarlogico("email_conf", "port", "idreg=1")));
  79.  
  80. $mail->Subject = $asunto;
  81.  
  82. //Remitente del email
  83. $mail->SetFrom($desde, $desde_name);
  84.  
  85. If ($con_copia !== "")
  86. {
  87. $mail->AddCC($con_copia, "");
  88. }
  89.  
  90. If ($con_copia_oculta !== "")
  91. {
  92. $mail->AddBcc($con_copia_oculta, "");
  93. }
  94.  
  95. If ($usar_plantilla == 1)
  96. {
  97. $mail->Body = $plantilla;
  98. }
  99. Else
  100. {
  101. $mail->Body = $contenido;
  102. }
  103.  
  104. //Adjuntamos archivos.
  105. If ($adjunto !== "")
  106. {
  107. //Creamos un array, se pueden adjuntar varios.
  108. $adjuntos = Explode(";", $adjunto);
  109.  
  110. //Por cada uno vamos adjuntando.
  111. foreach($adjuntos as $adjunto)
  112. {
  113. If ($adjunto !== "" And File_Exists($adjunto))
  114. {
  115. $mail->AddAttachment($adjunto);
  116. }
  117. }
  118. }
  119.  
  120. $mail->SMTPOptions = array(
  121. 'ssl' => array(
  122. 'verify_peer' => false,
  123. 'verify_peer_name' => false,
  124. 'allow_self_signed' => true
  125. )
  126. );
  127.  
  128. /*
  129. Si en para, en vez de blanco o un email:
  130. Pasamos un 1, se hace mailing a todos os suscriptores
  131. Pasamos un 2, se envía los usuarios registrados
  132. Pasamos una cadena que empieza por gr, enviamos a un grupo.
  133. */
  134. If ($para == "1" Or $para == "2" or substr($para, 0, 2) == "gr~")
  135. {
  136.  
  137. //En el para ponemos al admon
  138. $mail->AddAddress(comprobarlogico("sistema", "email", "idreg='1'"),comprobarlogico("email_conf", "nombre", "idreg='1'"));
  139.  
  140. //Abrimos los suscriptores.
  141. If ($para == "1")
  142. {
  143. $sql = "select email from boletines_subcr";
  144. $inf = "Enviada circular a suscriptores con asunto: $asunto";
  145. }
  146. elseif ($para == "2")
  147. {
  148. $sql = "select email from usuarios where activo = 1 and habilitado = 1";
  149. $inf = "Enviada circular a usuarios activos con asunto: $asunto";
  150. }
  151. elseif (substr($para, 0, 2) == "gr")
  152. {
  153. $item = explode("~", $para);
  154. $sql = "select email from usuarios where activo = 1 and habilitado = 1 and id_grupo = " . $item[1];
  155. $inf = "Enviada circular a usuarios activos con grupo " . $item[1] . " y asunto: $asunto";
  156. }
  157.  
  158. $tabla = $conn->query($sql) or die ("ERR0465: Error al tratar contenido.");
  159.  
  160. $i = 1;
  161.  
  162. //Si devuelve datos lo devolvemos
  163. If ($tabla->num_rows !== 0)
  164. {
  165. foreach ($tabla as $rs)
  166. {
  167. $mail->AddBcc($rs["email"], "");
  168.  
  169. If ($i == 50 Or $i == $tabla->num_rows)
  170. {
  171.  
  172. //Envío
  173. if(!$mail->Send())
  174. {
  175. $respuesta = "Error de envío: $mail->ErrorInfo";
  176. }
  177. else
  178. {
  179. $respuesta = True;
  180. }
  181.  
  182. //Reinicio el contador.
  183. $mail->ClearBCCs();
  184. $i=0;
  185. }
  186.  
  187. $i++;
  188. }
  189.  
  190. info($inf);
  191. }
  192. }
  193. Else
  194. {
  195. $mail->AddAddress($para, "");
  196.  
  197. if(!$mail->Send())
  198. {
  199. $respuesta = "Error de envío: " . $mail->ErrorInfo;
  200. }
  201. else
  202. {
  203. $respuesta = True;
  204. }
  205. }
  206.  
  207. // Enviamos log si procede.
  208. if ($log == 1)
  209. {
  210. date_default_timezone_set('Europe/Madrid');
  211. $name_file = __RAIZ . "/data/temp/" . date('d-m-Y_h-i-s-A', time()) .'_.txt';
  212.  
  213. $file = fopen($name_file, 'w' );
  214. fputs($file, $mail->smtp->smtp_errors);
  215. fclose($file);
  216.  
  217. $mail->ClearBCCs();
  218. $mail->clearAddresses();
  219. $mail->clearCCs();
  220.  
  221. $mail->AddAddress(comprobarlogico("sistema", "email", "idreg=1"),comprobarlogico("email_conf", "nombre", "idreg=1"));
  222. $mail->Subject = "Log de envío de email masivo.";
  223. $mail->Body = "Log de envío de email masivo.";
  224. $mail->AddAttachment($name_file);
  225.  
  226. $mail->Send();
  227.  
  228. unlink($name_file);
  229.  
  230. info("Enviado log de envío masivo a administrador. Nombre fichero: $name_file");
  231. }
  232.  
  233. $plantilla = "";
  234.  
  235. Return $respuesta;
  236. }
  237. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement