Ir al contenido principal

Como enviar correos (emails) desde Java con archivo adjunto

Bueno amigos, aqui muestro la clase que tengo asociada el ejemplo compilado en una aplicacion de escritorio java (NetBeans).


Nombre de la clase: JavaMail
/*
 * Fichero: JavaMail.java
 * Autor: Jeison Nisperuza
 * Fecha: 24/12/2010 18:14
 */
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.swing.*;
public class JavaMail
{
public void email(String para, String asunto,String mensaje) {
       try
        {
            JMailxView.barra_progreso.setVisible(true);
            Properties props = new Properties();
            props.setProperty("mail.smtp.host", "smtp.gmail.com");
            props.setProperty("mail.smtp.starttls.enable", "true");
            props.setProperty("mail.smtp.port", "587");
            props.setProperty("mail.smtp.user", JMailxView.jtfCuenta.getText());
            props.setProperty("mail.smtp.auth", "true");
            Session session = Session.getDefaultInstance(props, null);
            BodyPart texto = new MimeBodyPart();
            texto.setText(mensaje);
            BodyPart adjunto = new MimeBodyPart();
            adjunto.setDataHandler(
            new DataHandler(new FileDataSource(JMailxView.jtfAdjunto.getText())));
            adjunto.setFileName(JMailxView.nombreadd);
            MimeMultipart multiParte = new MimeMultipart();
            multiParte.addBodyPart(texto);
            multiParte.addBodyPart(adjunto);
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(JMailxView.jtfCuenta.getText()));           
            String [] correos;
            correos = para.split("\n");
                for(int i=0;i
                    message.addRecipient(
                    Message.RecipientType.TO,
                      new InternetAddress(correos[i]));
                        message.setSubject(asunto);
                         message.setContent(multiParte);
                    Transport t = session.getTransport("smtp");
                    t.connect(JMailxView.jtfCuenta.getText(), JMailxView.jptClave.getText());
                    t.sendMessage(message, message.getAllRecipients());
                    JMailxView.barra_progreso.setMaximum(correos.length);
                    JMailxView.barra_progreso.setValue(i);
                t.close();
              }
            JOptionPane.showMessageDialog(null, " El email ha sido enviado ");
            JMailxView.barra_progreso.setVisible(false);
            JMailxView.statusAnimationLabel.setVisible(false);
         }
        catch (Exception enc)
        {
       JOptionPane.showMessageDialog(null, " ERROR: No se pudo enviar el email ");
        }
    }
}
//

Aqui entrego el Ejemplo completo en la aplicacion de escritorio:

El nombre de la aplicacion es Jmailx


Deja tu comentario...

Comentarios

  1. me baje el ejemplo pero tengo un error por favor si me puede ayudar, no reconoce esta linea

    private com.toedter.components.JLocaleChooser jLocaleChooser1;

    este es mi correo cwtoledot@yahoo.com

    de antemando gracias por tu ayuda

    ResponderEliminar
  2. Hola;

    Este error lo que quiere decir es que te falta agregar las librerias de Java mail al proyecto que por algun error de la descarga no se bajaron o no las reconoce;

    estas librerias estan dentro del proyecto que descargaste y la puedes agregar de la siguiente forma:

    http://escribojava.blogspot.com/2010/07/ejemplo-de-agregar-libreria-netbeans.html

    ResponderEliminar
  3. wauuu this example is great ... Thanks

    ResponderEliminar
  4. grasias por el aporte y no se sime ayudarias con la recepcion de correos

    ResponderEliminar
  5. hola me serviria esto para enviar una copia de seguridad a mi correo de los datos que tengo en mi aplicacion java ?

    ResponderEliminar
  6. Hola nicolas, si estamos hablando de una base de datos puedes ver este ejemplo de backup.

    (http://escribojava.blogspot.com/2010/07/coms-control-de-mantenimientosbackup-de.html )

    puedes prgramar que saque la copia de seguridad y que autromaticamente la envie por correo.

    Saludos.

    ResponderEliminar
  7. Respuestas
    1. Hola Guaxy, este nombre corresponde a la clase de JFrame Principal debido que este ejemplo lo realicé en una aplicación de Escritorio, descargate el proyecto de NetBeans completo y veras como funciona.

      Eliminar
  8. a mi meda muchos errores y no es por libreria porque el proyecto la trajo cuando las descargue me dice que cree la clase JMailxApp, tambien el pakeqte org. o existe?? laguna idea, pero creo que fue no lo pusieron porque el programa trajo un packege vacio???

    ResponderEliminar
    Respuestas
    1. Bueno lo que comentas es válido, lo que ocurre son dos problemas al parecer no esta leyendo corectamente unas clases de un componente calendario que utilicé, por otro lado no esta identificando la clase JUnit que son librerias propias de netbeans para la contrucción de las ventanas.

      Ya subí nuevamente el proyecto con las clases del calendario faltantes y a suvez cuando lo abras si utilizas una versión superior a la 7.0 deberas hacer click derecho sobre el proyecto y darle click en resolver problemas y si estas conectado a internet el baja la clase faltante.

      Eliminar
  9. Oie para abrir esa clase y abrir desde otro botton como le hago

    ResponderEliminar
    Respuestas
    1. descargate la aplicación completa y verifica como funciona, te respondo que si se puede y puedes crear
      una nueva instancia.

      clase clase_correo = new clase();

      Eliminar
  10. Disculpa a mi si me funciona con gmail pero yo necesito enviarlo por un cliente de Outlook mi servidor de correo esta hosteado en Outlook y me dieron el nombre del servidor este pod51011.outlook.com con el puerto 587 pero no consigo conectarme

    alguien que me pueda ayudar mucho agradecere

    ResponderEliminar
    Respuestas
    1. Saludo, lo primero que debes saber es que tipo de correo es si es Exchange, PoP3, SMTP, u otro tipo de servidor y así mismo adicionar librerias especificas o si solo es necesario modificar las lineas que hacen referencia al servicio smtp que es el que utiliza gmail.

      Espero que te ayude...

      Eliminar
  11. Esto es lo que me enviaron para la configuración por eso digo que es SMTP.

    Gracias por responder.

    Tipo de autenticación asociado con esta sesión de Outlook Web App:
    Inicio de sesión público: No
    Configuración de POP externo:
    Nombre del servidor: pod51011.outlook.com
    Puerto: 995
    Método de cifrado: SSL
    Configuración de IMAP externa :
    Nombre del servidor: pod51011.outlook.com
    Puerto: 993
    Método de cifrado: SSL
    Configuración de SMTP externo:
    Nombre del servidor: pod51011.outlook.com
    Puerto: 587
    Método de cifrado: TLS

    ResponderEliminar
  12. te comento que si puedo enviar correos desde webmai.. y con la interfaz de Microsoft Outlook este último lo configure con estos parametros

    ResponderEliminar
  13. hola gracias por el documento esta muy bien pero lo q pasa es q me pide una autentificacion:

    com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at

    530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 u33sm37797513yhn.7 - gsmtp

    y vi el enlace y no me ayudo en mucho la verdad, tienes alguna idea a q se deba esto o por q se genera y cual es la posible solucion

    gracais

    ResponderEliminar
    Respuestas
    1. Hola jossmy, Como primera medida trata de descargarte el programa desde el botón azul descargar y allí vas modificando, te recomiendo la versión 7,0 de NetBeans.

      Gracias por visitar mi blog....

      Eliminar
  14. Gracias por el aporte, voy a checar como funciona tu programa necesito crear una aplicación para enviar correos a varios contactos con archivos adjuntos espero que si tienes algo me puedas ayudar

    Gracias

    ResponderEliminar
  15. HOLA SI AL CARGAR EL ARCHIVO NO LO DESEO ENVIAR POR CORREO SI NO A UNA CARPETE EN MI SERVIDOR LOCAL QUE DEBERIA HACER ???????????????? SI ALGUIEN SABE ME PODRIA AYUDAR POR FAVOR

    ResponderEliminar
    Respuestas
    1. Puedes utilizar la función Copy de java hay unas clases que ya hacen esta labor, incluso hay una entrada en este blog para eso se llama Manejo de Archivos...

      Eliminar
  16. en que versión de netbeans tiene que ejecutarse este programa..porque lo intente en la que yo tengo que es 7.3.1 y no lo logre... se lo agracedería mucho si me puede ayudar. Hasta luego :)

    ResponderEliminar
    Respuestas
    1. Hola, loq ue te ocurre es con la verison 7.3.1 no existe soporte para el framework con el que se crean las aplicaciones de escritorio que es swing, debe utilizar como maximo la verison 7.0 o 7.01

      Eliminar
  17. Hola gracias por tu aporte,ya corrí tu programa y no tengo ningún error, pero podrías indicarme que debo hacer porque ya escribí mi cuenta de gmail, clave,asunto,adjunte un archivo word, escibi el mensaje y siempre me aparece el mensaje"ERRO: No se pudo enviar el email" porfavor espero tu respuesta gracias

    ResponderEliminar
    Respuestas
    1. Hola Mireya, si ok entiendo el error, pero acabo de descargar la aplicación y funciona correctamente, lo que si te pido es que me suministres mas información a cerca de como estas compilando la aplicación es decir desde la version de netbeans hasta la versión del sistema operativo, agradezco me envies la información para poderte ayudar

      Eliminar
  18. Hola! sera posible que se pueda conectar a una base de datos y de ahi tomar los destinatarios y asi enviar los correos

    ResponderEliminar
    Respuestas
    1. Hola, si es posible solo debes agregar las clases de conexion a la base de datos, creas un boton que llame consulta y si quieres la cargas en el textArea para que no tengas que modificar mucho código.

      Espero te ayude...

      Eliminar
  19. hola el programa lo ejecute en netbeans 8.0.2 pero no entiendo que funcion tiene lo que aparece en el lado izquierdo y cuando lleno los datos del lado derecho me dice error no se pudo enviar el imei

    ResponderEliminar
  20. hola el programa lo ejecute en netbeans 8.0.2 pero no entiendo que funcion tiene lo que aparece en el lado izquierdo y cuando lleno los datos del lado derecho me dice error no se pudo enviar el imei

    ResponderEliminar
  21. https://tecniciencias.com/alternativas-a-wiseplay/
    La seguridad de su correo electrónico requiere más conocimientos técnicos, pero es posible el uso de una herramienta conocida como GPG. Los usuarios de Windows pueden encontrar una descarga gratuita y las instrucciones sobre cómo configurar GPG. Los usuarios de Mac

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Guardar datos en Postgre desde Java

Saludos amigos en esta oportunidad estableceremos conexion con postgre, para realizar la insercion de datos, primero que todo crearemos las variables de la conexion: String driver = "org.postgresql.Driver" ; String ruta = "jdbc:postgresql://localhost:5432/ nombre de la bd " ; String user = "postgres" ; String password = " clave "; Importante: El driver de Postgre para Java lo puedes descargar desde aqui: Driver PostgreSQL para explicar algo que es fundamental sobre la base de datos Ejemplo es que esta tiene tres (3) campos que son: codusuarios : de tipo biginteger serial (lo quiere decir que es un campo auto incremento en postgre). nombre : de tipo text. identificacion : de tipo text . Ahora seguimos con el codigo para insertar datos. Esta es la funcion correspondiente:   public void GuardarUsuario ( String nombre, String identificacion){         / / Insertar datos a la bd:           try{             Class.forName( d

Fireworks CS3 portable

Para que hagas los logos, botones e imagenes para tus aplicaciones facil y rapido... ¿Qué es Fireworks? Adobe Fireworks es una aplicación en forma de estudio (basada en la forma de estudio de Adobe Flash ), pero con más parecido a un taller destinado para el manejo híbrido de gráficos vectoriales con Gráficos en mapa de bits y que ofrece un ambiente eficiente tanto para la creación rápida de prototipos de sitios Web e interfaces de usuario, como para la creación y Optimización de Imágenes para web. Originalmente fue desarrollado por Macromedia , compañía que fue comprada en 2005 por Adobe Systems . Fireworks está disponible de forma individual o integrado en Adobe CS3/CS4/CS5 y por tanto ha sido diseñado para integrarse con otros productos de Adobe, como Dreamweaver y Flash . Integración con Adobe Flash La integración con Adobe Flash se ha ido reduciendo paulatinamente desde que Flash, en su versión 7, integró la herramienta PolyStar que hace un polígono

Pasar de una ventana a otra en java

Hola a todos en esta oportunidad estamos postiando algo que cuando empezamos con java es muy necesario y es como pasar de una ventana a otra, ya sea JDialog o JFrame; creados en tiempo de ejecucion o en aplicaciones de escritorio: Para llamar a un JDialog:        JDialog1 dialogo = new JDialog1 ( this , true );        dialogo . show (); y para cerrar un JDialogo de una plicacion de escritorio se puede utilizar:        dispose (); Para llamar a un JFrame:        JFrame1 frame = new JFrame1 ();        frame . show (); Para cerrar un JFrame de una plicacion de escritorio:                 dispose ();   o tambien: System. exit (0); y si se contruye a partir de la clase JFrame se coloca el siguiente codigo en la parte publica del documento:       setDefaultCloseOperation ( EXIT_ON_CLOSE ); Espero los siguientes ejemplos les sean de mucha ayuda... Deja tu comentario o agradecimiento.