Article View: es.comp.lenguajes.java
Article #27996Re: Incluir ficheros mediante un e-mail
From: Carlos Prados
Date: Sat, 20 Jun 1998 00:00
Date: Sat, 20 Jun 1998 00:00
90 lines
3358 bytes
3358 bytes
Dani wrote:
> Estoy desarrollando una aplicaci�n que debe mandar dos ficheros con
> extensi�n .db (de paradox) a un servidor de correo, para posteriormente
> recogerlos la persona a la que se indica.
>
> S� como mandar el correo, pero no como poder adjuntar los dos ficheros
> �Alguien puede ayudarme?
>
> Gracias y un saludo.
Debes generar un mensaje de correo con varios cuerpos, cada uno de los
cuales va separado por una cabecera que indica el correspondiente tipo
MIME del fichero que va a continuacion. Mira el codigo fuente de un
mensaje de correo generado con un cliente de correo, por ejemplo Netscape,
e intenta generar un mensaje asi desde tu programa. Yo lo he hecho asi
public void sendMail {
/*
Por aqui abro un socket con el puerto 25 y obtengo el PrintWriter pw o
bien en UNIX ejecuto "rmail"
y obtengo la STDIN del proceso en pw ...
A continuacion escribo el mail sobre el stream pw
*/
// Version MIME
pw.println("MIME-Version: 1.0");
// Campo subject
pw.println("Subject:" + msgSubject);
// Cuerpo del mensaje
pw.println("Content-Type: multipart/mixed; boundary="
+ '\"' + boundary + '\"');
pw.println();
pw.println("This is a multi-part message in MIME format.");
pw.println();
pw.println("--" + boundary);
pw.println("Content-Type: text/plain; charset=us-ascii");
pw.println("Content-Transfer-Encoding: 7bit");
pw.println();
pw.println(msgBody);
pw.println();
// Ficheros adjuntados
for(int i=0; i<attachedFiles.size(); i++) {
// Informacion de attachment
pw.println("--" + boundary);
pw.println("Content-Type: application/octet-stream");
pw.println("Content-Transfer-Encoding: base64");
pw.println("Content-Disposition: attachment; filename=" +
'\"' + (String)attachedFiles.elementAt(i) + '\"');
pw.println();
pw.flush();
// fichero binario codificado
byte[] buffer = (byte[])attachedCode.elementAt(i);
bos.write(buffer,0,buffer.length);
bos.flush();
pw.println();
}
// Termina el mensaje
pw.println("--" + boundary + "--");
pw.flush();
/*
Cerrar sockets y streams, o bien terminar el proceso "rmail"...
*/
}
Aclaraciones:
- boundary es un String arbitrario.
- msg Subject y msgBody son Strings con el subject y cuerpo principal del
mensaje respectivamente.
- attachedFiles es un vector cuyos elementos son byte arrays que contienen
los ficheros a atachear.
No conozco el formato db. Si no es ascii lo mismo tienes que
codificarlos previamente con UUEncode.
Si esto te parece complicado, quizas te sea util el API JavaMail de Sun.
Mira en http://java.sun.com.
Salu2.
Carlos
Technical Details
Message-ID:
<358B06C2.CB67C0ED@atos-ods.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<6me50t$njc$1@talia.mad.ibernet.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,7f44be4376e1cfd8 X-Google-Attributes: gid1116f3,public From: Carlos Prados <cprados@atos-ods.es> Subject: Re: Incluir ficheros mediante un e-mail Date: 1998/06/20 Message-ID: <358B06C2.CB67C0ED@atos-ods.es> X-Deja-AN: 364354104 Content-Transfer-Encoding: 8bit References: <6me50t$njc$1@talia.mad.ibernet.es> To: Dani <fresa@QUITARmaptel.es> Content-Type: text/plain; charset=iso-8859-1 Organization: Atos ODS Mime-Version: 1.0 Newsgroups: es.comp.lenguajes.java