Clase para enviar Correo desde Java [by BadDevil]

Iniciado por Pablo Videla, 29 Julio 2009, 05:45 AM

0 Miembros y 1 Visitante están viendo este tema.

Pablo Videla

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 (java) [Seleccionar]
/*

* Autor: BadDevil
* Fecha: 21/07/2009 18:14
*/

package Mail;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;



public class Mail
{
    private String host;
    private String usuario;
    private String password;
    private String puerto;
    private String auth; //boolean
    private String conexionSegura; // boolean
    private String CorreoVictima;
    private String CorreoFalso;
    private String nombreFalso;
    private String mensaje;
    private String asunto;
    public Mail()// constructor sin parametros
    {
    }
// constructor con todos los parametros
    public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String CorreoFalso, String nombreFalso, String mensaje,String asunto) {
        this.host = host;
        this.usuario = usuario;
        this.password = password;
        this.puerto = puerto;
        this.auth = auth;
        this.conexionSegura = conexionSegura;
        this.CorreoVictima = CorreoVictima;
        this.CorreoFalso = CorreoFalso;
        this.nombreFalso = nombreFalso;
        this.mensaje = mensaje;
        this.asunto = asunto;

    }
// constructor sin el nombre falso
    public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String CorreoFalso, String mensaje,String asunto) {
        this.host = host;
        this.usuario = usuario;
        this.password = password;
        this.puerto = puerto;
        this.auth = auth;
        this.conexionSegura = conexionSegura;
        this.CorreoVictima = CorreoVictima;
        this.CorreoFalso = CorreoFalso;
        this.mensaje = mensaje;
        this.asunto = asunto;
    }
// constructor sin el correo y el nombre falso
    public Mail(String host, String usuario, String password, String puerto, String auth, String conexionSegura, String CorreoVictima, String mensaje,String asunto) {
        this.host = host;
        this.usuario = usuario;
        this.password = password;
        this.puerto = puerto;
        this.auth = auth;
        this.conexionSegura = conexionSegura;
        this.CorreoVictima = CorreoVictima;
        this.mensaje = mensaje;
        this.asunto = asunto;
    }
    public String getAsunto()
    {
        return asunto;
    }
    public void enviarMensaje()
    {
         try
        {
            // Propiedades de la conexión
            Properties props = new Properties();
            props.setProperty("mail.smtp.host",""+ getHost()); // host del server
            props.setProperty("mail.smtp.starttls.enable",""+ getConexionSegura());//seguridad?
            props.setProperty("mail.smtp.port", ""+getPuerto());// puerto en mi caso 25
            props.setProperty("mail.smtp.user",""+ getUsuario());//cualquier cosa
            props.setProperty("mail.smtp.auth", getAuth());//no necesita identifiacion

            // Preparamos la sesion
            Session session = Session.getDefaultInstance(props);
            // Construimos el mensaje
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(""+getCorreoFalso()));

            message.addRecipient(
                Message.RecipientType.TO,
                new InternetAddress(""+getCorreoVictima()));
            message.setSubject(""+getAsunto());
           // message.setContent(""+getMensaje(),"text/ht ");
                     message.setHeader("text/html","charset=iso-8859-1");
            message.setContent(getMensaje(),"text/html; charset=iso-8859-1");
   
            // Lo enviamos.
            Transport t = session.getTransport("smtp");
          //  t.connect("127.0.0.1", null, null);
           // t.connect("localhost",null,null);
            t.connect(""+getUsuario(),""+getPassword());
         //   for(int i=0;i<5;i++){
            t.sendMessage(message,message.getAllRecipients());//funciona con ciclos
               JOptionPane.showMessageDialog(null, "¡Enviado Correctamente a "+getCorreoVictima()+" !");
         //   }
            // Cierre.
            t.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
           // e.getMessage();
           JOptionPane.showMessageDialog(null, "Error ... "+ e.getMessage());
        }
    }

    public String getCorreoFalso() {
        return CorreoFalso;
    }

    public void setCorreoFalso(String CorreoFalso) {
        this.CorreoFalso = CorreoFalso;
    }

    public String getCorreoVictima() {
        return CorreoVictima;
    }

    public void setCorreoVictima(String CorreoVictima) {
        this.CorreoVictima = CorreoVictima;
    }

    public String getAuth() {
        return auth;
    }

    public void setAuth(String auth) {
        this.auth = auth;
    }

    public String getConexionSegura() {
        return conexionSegura;
    }

    public void setConexionSegura(String conexionSegura) {
        this.conexionSegura = conexionSegura;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public String getNombreFalso() {
        return nombreFalso;
    }

    public void setNombreFalso(String nombreFalso) {
        this.nombreFalso = nombreFalso;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPuerto() {
        return puerto;
    }

    public void setPuerto(String puerto) {
        this.puerto = puerto;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

     
}



Amerikano|Cls

Gracias por el aporte, la tendre en cuenta cuando estudie estos temas de JavaMail  ;-) ;-)

Salu2




Mi blog:
http://amerikanocls.blogspot.com

-Gosw-

Se agradece... Puede ser bueno para hacer un bomber de mails... Si tengo fastidio... xDD

Pablo Videla

Cita de: -Kaiser- en 29 Julio 2009, 06:03 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)

Nakp

Ojo por ojo, y el mundo acabará ciego.

Danther

#5
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

Pablo Videla

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

Danther

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...

Pablo Videla

Cita de: 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...

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  ;)

Danther

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