fichero class.mail.inc.php Código PHP: <?php /** * @version 2.0a * @author MSDark ([email protected]) * @copyright MSDark */ class email { /** * Contiene el asunto del email enviar * * @var string * @acces private * */ var $asunto; /** * Contiene las direcciones de destino * * @var string * @acces private * */ var $direcciones; /** * Remitente del email * * @var string * @acces private * */ var $remitente; /** * Contiene el mensaje a enviar solo texto plano * * @var string * @acces private * */ var $mensaje; /** * Contiene si el email fue enviado o no * * Guarda un valor en caso de que el mail haya sido enviado. * @var booleano * @acces private * */ var $enviado; /** * Contiene el errro ocurrido en ejecucion * * @var string * @acces private * */ var $error; /** * Contiene un valor si los email son validos o no * * @var booleano * @acces private * */ var $comprobar; /** * Constructor de la clase * * Setea el valor de asunto, mensaje,remitente * y direcciones, mada a revisar los email o devuelve cierto error. * * @param asunto = asunto del email * @param direccion = direccion del email * @param mensaje =mensaje de email * @param remitente = remitente del email * @acces private */ function email($asunto,$direccion,$mensaje,$remitente) { if(empty($asunto) || empty($direccion) || empty($mensaje) || empty($remitente) ){ return $this->error(1); }else{ $this->asunto=$asunto; $this->direcciones=$direccion; $this->mensaje=$mensaje; $this->remitente=$remitente; $this->comprobar($direccion,$remitente); if(!$this->comprobar){ return $this->error(2); }//if } //if-else } //funcion /** * Setea el error que pueda ocurrir durante ejecucion * * @param e = error ocurrido durante ejecucion * @acces private * */ function error($e) { switch($e){ case 1: return $this->error="No has completado todos los datos"; break; case 2: return $this->error="El/los email(s) de remitente y/o destino son invalidos"; break; case 3: return $this->error="No se han establecido los campos necesarios"; break; case 4: return $this->error="No se puede enviar el/los email(s)"; break; case 5: return $this->error="No se puede realizar conexion con el servidor SMTP <b>$errn: error</b>"; break; case 6: return $this->error="No se puede establecer comunicacion con el servidor"; break; case 7: return $this->error="No se puede cerrar conexion con el servidor"; break; default: break; }//switch } //funcion /** * Devuelve el error ocurrido * * @acces private * * @return string El error ocurrido */ function errores() { return $this->error; }//funcion /** * Comprueba los email de destino y remitente * * Comprueba si ambos campos son validos es decir contiene @, '.' y un dominio valido. * @param direccion = direccion del email * @param remitente = remitente del email{ * @acces private * * @return booleano */ function comprobar($direccion,$remitente) { $this->comprobar=false; if((@is_array($direccion)) && (@is_array($remitente))){ for($i=0; $i<@count($direccion); $i++){ if ((@strlen($direccion[$i]) >= 3) && (@substr_count($direccion[$i],"@") == 1) && (@substr($direccion[$i],0,1) != "@") && (@substr($direccion[$i],@strlen($direccion[$i])-1,1) != "@") && (@strlen($remitente[$i]) >= 6) && (@substr_count($remitente[$i],"@") == 1) && (@substr($remitente[$i],0,1) != "@") && (@substr($direccion[$i],@strlen($remitente[$i])-1,1) != "@")){ if ((!@strstr($direccion[$i],"'")) && (!@strstr($direccion[$i],"\"")) && (!@strstr($direccion[$i],"\\")) && (!@strstr($direccion[$i],"\$")) && (!@strstr($direccion[$i]," ")) && (!@strstr($remitente[$i],"'")) && (!@strstr($remitente[$i],"\"")) && (!@strstr($remitente[$i],"\\")) && (!@strstr($remitente[$i],"\$")) && (!@strstr($remitente[$i]," "))) { if ((@substr_count($direccion[$i],".")>= 1) && (@substr_count($remitente[$i],".")>= 1)){ $term = @substr(@strrchr ($direccion[$i], '.'),1); $term2= @substr(@strrchr ($remitente[$i], '.'),1); if (@strlen($term)>1 && @strlen($term)<5 && (!@strstr($term,"@")) && @strlen($term2)>1 && @strlen($term2)<5 && (!@strstr($term2,"@"))){ $antes = @substr($direccion[$i],0,@strlen($direccion[$i]) - @strlen($term) - 1); $antes2 = @substr($remitente[$i],0,@strlen($remitente[$i]) - @strlen($term) - 1); $caracter = @substr($antes,@strlen($antes)-1,1); $caracter2= @substr($antes2,@strlen($antes2)-1,1); if ($caracter != "@" && $caracter != "." && $caracter2 !="@" && $caracter2 !="."){ $this->comprobar= true; } } } } } } if($this->comprobar){ return $this->comprobar=true; }else{ return $this->comprobar=false; } }else{ if ((@strlen($direccion) >= 3) && (@substr_count($direccion,"@") == 1) && (@substr($direccion,0,1) != "@") && (@substr($direccion,@strlen($direccion)-1,1) != "@") && (@strlen($remitente) >= 6) && (@substr_count($remitente,"@") == 1) && (@substr($remitente,0,1) != "@") && (@substr($direccion,@strlen($remitente)-1,1) != "@")){ if ((!@strstr($direccion,"'")) && (!@strstr($direccion,"\"")) && (!@strstr($direccion,"\\")) && (!@strstr($direccion,"\$")) && (!@strstr($direccion," ")) && (!@strstr($remitente,"'")) && (!@strstr($remitente,"\"")) && (!@strstr($remitente,"\\")) && (!@strstr($remitente,"\$")) && (!@strstr($remitente," "))) { if ((@substr_count($direccion,".")>= 1) && (@substr_count($remitente,".")>= 1)){ $term = @substr(@strrchr ($direccion, '.'),1); $term2= @substr(@strrchr ($remitente, '.'),1); if (@strlen($term)>1 && @strlen($term)<5 && (!@strstr($term,"@")) && @strlen($term2)>1 && @strlen($term2)<5 && (!@strstr($term2,"@"))){ $antes = @substr($direccion,0,@strlen($direccion) - @strlen($term) - 1); $antes2 = @substr($remitente,0,@strlen($remitente) - @strlen($term) - 1); $caracter = @substr($antes,@strlen($antes)-1,1); $caracter2= @substr($antes2,@strlen($antes2)-1,1); if ($caracter != "@" && $caracter != "." && $caracter2 !="@" && $caracter2 !="."){ $this->comprobar=true; } } } } } if($this->comprobar){ return $this->comprobar=true; }else{ return $this->comprobar=false; } } }//funcion /** * Envia el email * * Envia el email mediante funcion mail() * @acces private * */ function enviar() { if(!$this->direcciones || !$this->asunto || !$this->mensaje || !$this->remitente ){ return $this->error(3); }else{ if(@is_array($this->direcciones) || @is_array($this->asunto) || @is_array($this->mensaje) || @is_array($this->remitente)){ for($i=0;$i<count($this->direcciones);$i++){ if(!@mail($this->direcciones[$i],$this->asunto[$i],$this->mensaje[$i],"FROM : ".$this->remitente[$i]."\r\nReply To: ".$this->remitente[$i]."\r\n")){ return $this->error(4); }else{ return $this->enviado=true; } }//fin for }else{ if(!@mail($this->direcciones,$this->asunto,$this->mensaje,"FROM : ".$this->remitente."\r\nReply To: ".$this->remitente."\r\n")){ return $this->error(4); }else{ return $this->enviado=true; } } } } //funcion /** * Devuelve un mensaje de aviso del envio del mail * * @acces private * * @return string */ function enviado() { if(!$this->enviado){ return; }else{ if($this->enviado){ return "Email(s) enviado"; }else{ return "Email(s) no enviado"; } } }//funcion /** * Envia el mail por medio de sockets * * Envia el mail por medio de sockets SMTP, con posibilidad de untentificar el usuario. * @param server = servidor SMTP * @param port = puerto SMTP * @param user = usuario del servidor por defecto "" * @param pass = password del servidor por defecto "" * @acces private * * * @param string $user * @param string $pass */ function smtp($server,$port,$user="",$pass="") { if(!$this->direcciones || !$this->asunto || !$this->mensaje || !$this->remitente ){ return $this->error(3); }else{ $fp=fsockopen($server,$port,&$errn,&$error,30) or ($this->error(5)); echo fgets($fp,1024); fputs($fp,"EHLO 71675615@globalcom\r\n"); fgets($fp,1024); if($user!="" || $pass!=""){ $auth="AUTH LOGIN\r\n"; fputs($fp,$auth."\r\n") or ($this->error(6)); fgets($fp,1024); $user=base64_encode($user); fputs($fp,$user."\r\n") or ($this->error(6)); fgets($fp,1024); $pass=base64_encode($pass); fputs($fp,$pass."\r\n") or ($this->error(6)); fgets($fp,1024); } if(@is_array($this->direcciones) || @is_array($this->asunto) || @is_array($this->mensaje) || @is_array($this->remitente)){ for ($i=0;$i<count($this->direcciones);$i++){ fputs($fp,"MAIL FROM:".$this->remitente[$i]."\r\n") or ($this->error(6)); fgets($fp,1024); fputs($fp,"RCPT TO:".$this->direcciones[$i]."\r\n") or ($this->error(6)); fgets($fp,1024); fputs($fp,"DATA\r\n") or ($this->error(6)); fgets($fp,1024); fputs($fp,"SUBJECT:".$this->asunto[$i]."\r\n.\r\n") or ($this->error(6)); fgets($fp,1024); fputs($fp,$this->mensaje[$i]."\r\n.\r\n") or ($this->error(6)); fgets($fp,1024); } }else{ fputs($fp,"MAIL FROM:".$this->remitente."\r\n") or ($this->error(6)); fgets($fp,1024); fputs($fp,"RCPT TO:".$this->direcciones."\r\n") or ($this->error(6)); fgets($fp,1024); fputs($fp,"DATA\r\n") or ($this->error(6)); fgets($fp,1024); fputs($fp,"SUBJECT:".$this->asunto."\r\n.\r\n") or ($this->error(6)); fgets($fp,1024); fputs($fp,$this->mensaje."\r\n.\r\n") or ($this->error(6)); fgets($fp,1024); } fputs($fp,"QUIT\r\n") or ($this->error(6)); fgets($fp,1024); fclose($fp) or ($this->error(7)); } }//funcion /*** FIN CLASE ***/ } ?> fichero class.mail.inc.php
ahora las 4 formas que esta clase nos permite enviar el email/s
siguiente post ==>>> |