Foros del Web » Programación para mayores de 30 ;) » Java »

Enviar correo con archivos adjuntos

Estas en el tema de Enviar correo con archivos adjuntos en el foro de Java en Foros del Web. compaz, les pongo mi codigo para que vean como estoy enviando el mail y me digan por que no estan llegando los archivos adjuntos. gracias: ...
  #1 (permalink)  
Antiguo 08/07/2009, 09:00
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Enviar correo con archivos adjuntos

compaz, les pongo mi codigo para que vean como estoy enviando el mail y me digan por que no estan llegando los archivos adjuntos.

gracias:

Código java:
Ver original
  1. //enviar correo
  2.     public static void enviar(){
  3.         //dividir los archivos adjuntos
  4.         String patron =";";
  5.         String [] dividido_adj,dividido_adj_nom;
  6.         dividido_adj = archivos_adjuntos.split(patron);
  7.         dividido_adj_nom = archivos_adjuntos_nombre.split(patron);
  8.         int i=0;
  9.         //dividir los receptores
  10.         para = jt_para.getText();
  11.         String [] dividido_para;
  12.         dividido_para = para.split(patron);
  13.         int o=0;
  14.  
  15.         //correo
  16.         try {
  17.             System.out.println("envia el correo");
  18.             // Get system properties
  19.             Properties props = System.getProperties();
  20.  
  21.             // Setup mail server
  22.             props.put("mail.smtp.host", mihost);
  23.  
  24.             // Get session
  25.             Session session = Session.getDefaultInstance(props, null);
  26.             //que es esto? seguro para añadir el mensaje
  27.             BodyPart texto = new MimeBodyPart();
  28.             // Texto del mensaje
  29.             texto.setText(ja_mensaje.getText());
  30.  
  31.             //y esto tal vez es para poner los adjuntos
  32.             BodyPart adjunto = new MimeBodyPart();
  33.             // Cargamos los archivos
  34.             for(i=0;i<=dividido_adj.length-1;i++){
  35.                 System.out.println(dividido_adj[i]);
  36.                 adjunto.setDataHandler(new DataHandler(new FileDataSource(dividido_adj[i])));
  37.                 // nombre de fichero.
  38.                 adjunto.setFileName(dividido_adj_nom[i]);
  39.             }
  40.  
  41.             //defino las partes del mensaje
  42.             MimeMultipart multiParte = new MimeMultipart();
  43.             multiParte.addBodyPart(texto);
  44.             multiParte.addBodyPart(adjunto);
  45.  
  46.             // Define message
  47.             MimeMessage message = new MimeMessage(session);
  48.             message.setFrom(new InternetAddress("Andrey_Lopez"));
  49.             message.setSubject(jt_asunto.getText());
  50.             //for para agregar PARAS
  51.             for(o=0;o<=dividido_para.length-1;o++){
  52.                 message.addRecipient(Message.RecipientType.TO,new InternetAddress(dividido_para[o]));
  53.             }
  54.             message.setText(ja_mensaje.getText());
  55.             // Envia el mensaje
  56.             Transport.send(message);
  57.  
  58.         } catch (Throwable e) {
  59.             System.out.println("Fallo sendEmail al enviar Correo: " +e.getMessage());
  60.             e.printStackTrace();
  61.         }
  62.     }


EDITO::::

este codigo lo saque de:
http://www.chuidiang.com/chuwiki/ind...avaMail_y_Java
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175

Última edición por lobo_php; 08/07/2009 a las 09:14 Razón: Credits... Chuidiang
  #2 (permalink)  
Antiguo 08/07/2009, 09:21
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Enviar correo con archivos adjuntos

bueno ya lo arregle...
en vez de esto:

message.setText(ja_mensaje.getText());

debia poner esto:

message.setContent(multiParte);


pero ahora mi pregunta es:

como hago para enviar varios archivos adjuntos? es que si envio mas de uno solo me toma el ultimo.

ya que se esta definiendo una variable con ese archivo y no es posible hacer variables dinamicamente.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #3 (permalink)  
Antiguo 08/07/2009, 09:41
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Enviar correo con archivos adjuntos

estoy intentando poner esos adjuntos en una variable tipo object

pero me sale el siguiente error:

java.lang.ClassCastException: java.lang.Object cannot be cast to [Ljava.lang.Object;

y lo tengo asi:

Código java:
Ver original
  1. BodyPart adjunto = new MimeBodyPart();
  2.             //el objeto para poder enviar varios
  3.             Object[] objeto = (Object[]) new Object();
  4.             // Cargamos los archivos
  5.             for(i=0;i<=dividido_adj.length-1;i++){
  6.                 System.out.println(dividido_adj[i]);
  7.                 adjunto.setDataHandler(new DataHandler(new FileDataSource(dividido_adj[i])));
  8.                 // nombre de fichero.
  9.                 adjunto.setFileName(dividido_adj_nom[i]);
  10.                 //para añadir el adjunto:
  11.                 objeto[i] = adjunto;
  12.             }
  13.  
  14.             //defino las partes del mensaje
  15.             MimeMultipart multiParte = new MimeMultipart();
  16.             multiParte.addBodyPart(texto);
  17.             i=0;
  18.             for(i=0;i<=dividido_adj.length-1;i++){
  19.                 multiParte.addBodyPart((BodyPart) objeto[i]);
  20.             }
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #4 (permalink)  
Antiguo 09/07/2009, 12:09
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Enviar correo con archivos adjuntos

emmm nada?
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #5 (permalink)  
Antiguo 09/07/2009, 14:03
 
Fecha de Ingreso: junio-2009
Ubicación: Mexico
Mensajes: 11
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Enviar correo con archivos adjuntos

si claro eso es porquqe estas tratando de convertir un objeto en un arreglo de objetos. Hay varias formas de hacerlo pero siguiendo tu logica se puede hacer con una lista de objetos (colecciones no se que haria sn ellas) aqui te dejo un ejemplo tomado del del chuidiang


Código PHP:
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.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
//IMPORTAMOS LAS LIBRERIAS DE COLLECTIONS
import java.util.List;
import java.util.LinkedList;
import java.util.Iterator;
public class 
EnviarMailComplejo
{
   
    public static 
void main(String[] args)
    {
        try
        {
         
String archivos_adjuntos "c:/futbol.jpg;c:/ae.gif;c:/ahr.jpg";
         
String archivos_adjuntos_nombre "futbol.jpg;ae.gif;ahr.jpg";
         
String patron =";";        
         
String [] dividido_adj,dividido_adj_nom;        
         
dividido_adj archivos_adjuntos.split(patron);        
         
dividido_adj_nom archivos_adjuntos_nombre.split(patron);
          
// se obtiene el objeto Session. La configuración es para
          // una cuenta de gmail.
            
Properties props = new Properties();
            
props.put("mail.smtp.host""mail.gpopixel.com");
            
props.setProperty("mail.smtp.starttls.enable""true");
            
props.setProperty("mail.smtp.port""26");
            
props.setProperty("mail.smtp.user""[email protected]");
            
props.setProperty("mail.smtp.auth""true");

            
Session session Session.getDefaultInstance(propsnull);
            
// session.setDebug(true);

            // Se compone la parte del texto
            
BodyPart texto = new MimeBodyPart();
            
texto.setText("Texto del mensaje");
            List<
BodyPartbp = new LinkedList<BodyPart>();//<-------creamos una lista de adjuntos
            // Se compone el adjunto con la imagen
            
             
for(int i=0;i<=dividido_adj.length-1;i++)
             {
             
BodyPart adjunto = new MimeBodyPart();
             
adjunto.setDataHandler(new DataHandler(new FileDataSource(dividido_adj[i])));
             
adjunto.setFileName(dividido_adj_nom[i]);
             
bp.add(adjunto);//<----------------añadimos el elemento a la lista
             
}

            
// Una MultiParte para agrupar texto e imagen.
            
MimeMultipart multiParte = new MimeMultipart();
            
multiParte.addBodyPart(texto);
           
         
Iterator it bp.iterator();//<------------la iteramos
           
while(it.hasNext())//<----------------la recorremos
           
{
              
BodyPart attach =(BodyPart)it.next();//<------------obtenemos el objeto
            
multiParte.addBodyPart(attach);//<-----------------finalmente lo añadimos al mensaje
            
}
           

            
// Se compone el correo, dando to, from, subject y el
            // contenido.
            
MimeMessage message = new MimeMessage(session);
            
message.setFrom(new InternetAddress("[email protected]"));
            
message.addRecipient(
                
Message.RecipientType.TO,
                new 
InternetAddress("[email protected]"));
            
message.setSubject("Hola");
            
message.setContent(multiParte);

            
// Se envia el correo.
            
Transport t session.getTransport("smtp");
            
t.connect("[email protected]""luisbat");
            
t.sendMessage(messagemessage.getAllRecipients());
            
t.close();
        }
        catch (
Exception e)
        {
            
e.printStackTrace();
        }
    }



espero te funcione ami si me sirvió

saludos
  #6 (permalink)  
Antiguo 10/07/2009, 10:07
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Enviar correo con archivos adjuntos

compa me funciono a la perfeccion, todo bien por la ayuda.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #7 (permalink)  
Antiguo 19/08/2011, 15:25
 
Fecha de Ingreso: agosto-2011
Mensajes: 1
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Enviar correo con archivos adjuntos

Hola

Segui el código que adjunta mas de un archivo que esta en este foro y aparentemente se envia el correo pero no me llega nada saben que podra ser les dejo mi codigo, gracias.

try
{

// Se envía correo de solicitud a
String host="127.0.0.1";
String from = sCorreo;
String to = "[email protected]";

Properties props=System.getProperties();
props.put("mail.smtp.host",host);
Session sessionMail=Session.getDefaultInstance(props,null) ;
MimeMessage message=new MimeMessage(sessionMail);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
//message.addRecipient(Message.RecipientType.CC,new InternetAddress(cc));
message.setSubject(sConsulta);

// Completa el cuerpo del correo
String sCuerpoCorreo = "------Atención a Clientes------<br><br>";
sCuerpoCorreo = sCuerpoCorreo + "Correo: " + sCorreo + "<br>";
sCuerpoCorreo = sCuerpoCorreo + "Comentario: " + sComentarios + "<br>";
sCuerpoCorreo = sCuerpoCorreo + "Guía: " + sGuia;
sCuerpoCorreo = sCuerpoCorreo + "<br><br>";
sCuerpoCorreo = sCuerpoCorreo + "--------------------------------";

//message.setContent(sCuerpoCorreo,"text/html");

//***********************ADJUNTAR ARCHIVO***************
// Se crea la parte del contenido del mensaje body
BodyPart texto = new MimeBodyPart();
// Fill the message
texto.setContent(sCuerpoCorreo,"text/html");

List<BodyPart> bp = new LinkedList<BodyPart>();


// Part two is attachment
for(int i = 0; i< urlSplit.length; i++)
{
String filename2 = urlSplit[i];
//String filename2 = filename.replace('\\','/');


BodyPart adjunto = new MimeBodyPart();

adjunto.setDataHandler(new DataHandler(new FileDataSource(filename2)));


bp.add(adjunto);
}

MimeMultipart multiParte = new MimeMultipart();
multiParte.addBodyPart(texto);

Iterator it = bp.iterator();
while(it.hasNext())
{
BodyPart attach =(BodyPart)it.next();
multiParte.addBodyPart(attach);
}

// Put parts in message
message.setContent(multiParte);


Transport.send(message);

// Carga página que indica que la solicitud se hizo de forma exitosa
response.sendRedirect ("/infoycont/respuesta.html");
}
catch (Exception e) {
out.println("Error al enviar el correo <br>");
out.println(e);
out.println("<br><br>");
out.println("<input type=\"button\" name=\"Retornar\" value=\"Retornar\" onclick=\"history.back(1)\">");

}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:06.