Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Pablo Videla en 29 Julio 2009, 05:45 am



Título: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Pablo Videla en 29 Julio 2009, 05:45 am
Clase creada para enviar correos anonimos , con soporte html
cada uno puede usarlo para lo que quiera... para usar esa clase debe tener la libreria javamail googleando la encontraran altiro , espero que les sirva , saludos , tambien la pueden arreglar seguro tienen sus errores por ahi , pero funciona a la perfeccion.
Código
  1. /*
  2.  
  3.  * Autor: BadDevil
  4.  * Fecha: 21/07/2009 18:14
  5.  */
  6.  
  7. package Mail;
  8. import java.util.Properties;
  9.  
  10. import javax.mail.Message;
  11. import javax.mail.Session;
  12. import javax.mail.Transport;
  13. import javax.mail.internet.InternetAddress;
  14. import javax.mail.internet.MimeMessage;
  15. import javax.swing.JOptionPane;
  16.  
  17.  
  18.  
  19. public class Mail
  20. {
  21.    private String host;
  22.    private String usuario;
  23.    private String password;
  24.    private String puerto;
  25.    private String auth; //boolean
  26.    private String conexionSegura; // boolean
  27.    private String CorreoVictima;
  28.    private String CorreoFalso;
  29.    private String nombreFalso;
  30.    private String mensaje;
  31.    private String asunto;
  32.    public Mail()// constructor sin parametros
  33.    {
  34.    }
  35. // constructor con todos los parametros
  36.    public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String CorreoFalso, String nombreFalso, String mensaje,String asunto) {
  37.        this.host = host;
  38.        this.usuario = usuario;
  39.        this.password = password;
  40.        this.puerto = puerto;
  41.        this.auth = auth;
  42.        this.conexionSegura = conexionSegura;
  43.        this.CorreoVictima = CorreoVictima;
  44.        this.CorreoFalso = CorreoFalso;
  45.        this.nombreFalso = nombreFalso;
  46.        this.mensaje = mensaje;
  47.        this.asunto = asunto;
  48.  
  49.    }
  50. // constructor sin el nombre falso
  51.    public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String CorreoFalso, String mensaje,String asunto) {
  52.        this.host = host;
  53.        this.usuario = usuario;
  54.        this.password = password;
  55.        this.puerto = puerto;
  56.        this.auth = auth;
  57.        this.conexionSegura = conexionSegura;
  58.        this.CorreoVictima = CorreoVictima;
  59.        this.CorreoFalso = CorreoFalso;
  60.        this.mensaje = mensaje;
  61.        this.asunto = asunto;
  62.    }
  63. // constructor sin el correo y el nombre falso
  64.    public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String mensaje,String asunto) {
  65.        this.host = host;
  66.        this.usuario = usuario;
  67.        this.password = password;
  68.        this.puerto = puerto;
  69.        this.auth = auth;
  70.        this.conexionSegura = conexionSegura;
  71.        this.CorreoVictima = CorreoVictima;
  72.        this.mensaje = mensaje;
  73.        this.asunto = asunto;
  74.    }
  75.    public String getAsunto()
  76.    {
  77.        return asunto;
  78.    }
  79.    public void enviarMensaje()
  80.    {
  81.         try
  82.        {
  83.            // Propiedades de la conexión
  84.            Properties props = new Properties();
  85.            props.setProperty("mail.smtp.host",""+ getHost()); // host del server
  86.            props.setProperty("mail.smtp.starttls.enable",""+ getConexionSegura());//seguridad?
  87.            props.setProperty("mail.smtp.port", ""+getPuerto());// puerto en mi caso 25
  88.            props.setProperty("mail.smtp.user",""+ getUsuario());//cualquier cosa
  89.            props.setProperty("mail.smtp.auth", getAuth());//no necesita identifiacion
  90.  
  91.            // Preparamos la sesion
  92.            Session session = Session.getDefaultInstance(props);
  93.            // Construimos el mensaje
  94.            MimeMessage message = new MimeMessage(session);
  95.            message.setFrom(new InternetAddress(""+getCorreoFalso()));
  96.  
  97.            message.addRecipient(
  98.                Message.RecipientType.TO,
  99.                new InternetAddress(""+getCorreoVictima()));
  100.            message.setSubject(""+getAsunto());
  101.           // message.setContent(""+getMensaje(),"text/ht ");
  102.                     message.setHeader("text/html","charset=iso-8859-1");
  103.            message.setContent(getMensaje(),"text/html; charset=iso-8859-1");
  104.  
  105.            // Lo enviamos.
  106.            Transport t = session.getTransport("smtp");
  107.          //  t.connect("127.0.0.1", null, null);
  108.           // t.connect("localhost",null,null);
  109.            t.connect(""+getUsuario(),""+getPassword());
  110.         //   for(int i=0;i<5;i++){
  111.            t.sendMessage(message,message.getAllRecipients());//funciona con ciclos
  112.               JOptionPane.showMessageDialog(null, "¡Enviado Correctamente a "+getCorreoVictima()+" !");
  113.         //   }
  114.            // Cierre.
  115.            t.close();
  116.        }
  117.        catch (Exception e)
  118.        {
  119.            e.printStackTrace();
  120.           // e.getMessage();
  121.           JOptionPane.showMessageDialog(null, "Error ... "+ e.getMessage());
  122.        }
  123.    }
  124.  
  125.    public String getCorreoFalso() {
  126.        return CorreoFalso;
  127.    }
  128.  
  129.    public void setCorreoFalso(String CorreoFalso) {
  130.        this.CorreoFalso = CorreoFalso;
  131.    }
  132.  
  133.    public String getCorreoVictima() {
  134.        return CorreoVictima;
  135.    }
  136.  
  137.    public void setCorreoVictima(String CorreoVictima) {
  138.        this.CorreoVictima = CorreoVictima;
  139.    }
  140.  
  141.    public String getAuth() {
  142.        return auth;
  143.    }
  144.  
  145.    public void setAuth(String auth) {
  146.        this.auth = auth;
  147.    }
  148.  
  149.    public String getConexionSegura() {
  150.        return conexionSegura;
  151.    }
  152.  
  153.    public void setConexionSegura(String conexionSegura) {
  154.        this.conexionSegura = conexionSegura;
  155.    }
  156.  
  157.    public String getHost() {
  158.        return host;
  159.    }
  160.  
  161.    public void setHost(String host) {
  162.        this.host = host;
  163.    }
  164.  
  165.    public String getMensaje() {
  166.        return mensaje;
  167.    }
  168.  
  169.    public void setMensaje(String mensaje) {
  170.        this.mensaje = mensaje;
  171.    }
  172.  
  173.    public String getNombreFalso() {
  174.        return nombreFalso;
  175.    }
  176.  
  177.    public void setNombreFalso(String nombreFalso) {
  178.        this.nombreFalso = nombreFalso;
  179.    }
  180.  
  181.    public String getPassword() {
  182.        return password;
  183.    }
  184.  
  185.    public void setPassword(String password) {
  186.        this.password = password;
  187.    }
  188.  
  189.    public String getPuerto() {
  190.        return puerto;
  191.    }
  192.  
  193.    public void setPuerto(String puerto) {
  194.        this.puerto = puerto;
  195.    }
  196.  
  197.    public String getUsuario() {
  198.        return usuario;
  199.    }
  200.  
  201.    public void setUsuario(String usuario) {
  202.        this.usuario = usuario;
  203.    }
  204.  
  205.  
  206. }
  207.  



Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Amerikano|Cls en 29 Julio 2009, 05:49 am
Gracias por el aporte, la tendre en cuenta cuando estudie estos temas de JavaMail  ;-) ;-)

Salu2


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: -Gosw- en 29 Julio 2009, 06:03 am
Se agradece... Puede ser bueno para hacer un bomber de mails... Si tengo fastidio... xDD


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Pablo Videla en 29 Julio 2009, 06:07 am
Se agradece... Puede ser bueno para hacer un bomber de mails... Si tengo fastidio... xDD

Es cosa de creatividad jajajaj (lo del bomber es un simple ciclo =P)


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Nakp en 29 Julio 2009, 06:08 am
cabe mencionar que requiere j2ee :P


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Danther en 30 Julio 2009, 15:56 pm
Espero que no os importe que lo pregunte aqui, pero el otro el otro dia me puse a aprender el uso de java para envios de email usando esta clase como base.

Lo corri en Netbeans y probe usando el servidor smtp de gmail y de hotmail con mis cuentas.
Todo bien.

El problema viene cuando lo intento usar con un servidor smtp corriendo en mi propia maquina (en este caso argosoft, una version antigua de 2006, pero que no es de pago...)
Me coge el mensage, pero a la hora de enviarlo falla porque se queda en:
ERROR: Timed out when waiting for data

Tengo el relay configurado con un servidor dns cualquiera, que es lo que lei por ahi que hiciera
T.T No se si es que me falta algo, o es que gmail / hotmail no recibe este tipo de mensajes


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Pablo Videla en 30 Julio 2009, 18:52 pm
A mi me paso lo mismo solo que otro mensaje de error.... y el servidor en smtp localhost me tiro el problema intenta con otro servidor smtp localhost


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Danther en 31 Julio 2009, 17:24 pm
Voy a ver si me instalo en el otro disco duro que tengo debian (actualmente uso windows ._.) y pruebo con el servidor smtp que trae

De todas formas segun he leido por ahi, el problema mas bien radica en la serie de filtros de spam que hotmail / gmail / yahooo etc usan
Cosas como el PBL, los sistemas de puntos etc
Que o tienes un dominio de correo de verdad, o nada de nada ._.

En fin...


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Pablo Videla en 31 Julio 2009, 17:40 pm
Voy a ver si me instalo en el otro disco duro que tengo debian (actualmente uso windows ._.) y pruebo con el servidor smtp que trae

De todas formas segun he leido por ahi, el problema mas bien radica en la serie de filtros de spam que hotmail / gmail / yahooo etc usan
Cosas como el PBL, los sistemas de puntos etc
Que o tienes un dominio de correo de verdad, o nada de nada ._.

En fin...

nada que ver por que yo estoy usando un servidor smtp externo (no es gmail , ni hotmail ni nada conocido) y me funciona a la perfeccion  ;)


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Danther en 31 Julio 2009, 17:51 pm
Un servidor smtp externo que este bien configurado no deberia tener ningun problema
La cosa es que un servidor local corriendo bajo una ip normal y corriente tiene todas las papeletas para que ni te contesten (tambien depende de la seguridad de a quien se lo envies claro...)

Yo de todas formas me contento con usar tu clase (¡Gracias! ^^) con el smtp de hotmail, que a diferencia del de gmail no te remodifica el remitente y para el caso hace el apaño XD


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Pablo Videla en 31 Julio 2009, 18:00 pm
ajajaj si tienes una web puedes usar el servidor smtp de tu web (creo que los hosting gratuitos no dejan)

saludos  ;)


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: juancho77 en 31 Julio 2009, 21:42 pm
cabe mencionar que requiere j2ee :P

Tambien se puede bajar solo el API JavaMail desde este ENLACE (https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter). Pesa solo 3 mb.Fijense que el recuadro naranja invita a descargar usand el Sun Download Manager, pero si hacemos click en el archivo se baja con el gestor tradicional. No se dejen engañar por esas cosas  :rolleyes:

Para usar en eclipse: Project-> Properties -> Java Build Path y agregan el jar mail.jar a las librerias como "External Jar"


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Nakp en 2 Agosto 2009, 01:45 am
mmm pues ese enlace no me funciona... se tiene que empezar desde este (http://java.sun.com/products/javamail/downloads/index.html)

no sabía que se podían descargar esas apis "standlone".. gracias :P


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: juancho77 en 4 Agosto 2009, 07:39 am
uh es verdad, el enlace que publiqué es ese temporal que te crean los sitios cuando requeris el archivo. el tuyo es correcto  :P


Título: Re: Clase para enviar Correo desde Java [by BadDevil]
Publicado por: Pablo Videla en 6 Agosto 2009, 02:54 am
http://uploading.com/files/G8CGMCIG/javamail-1.4.2.zip.html

Les dejo el link de la libreria JavaMail, Saludos.