Retroceder   Foros del Web > Programación para sitios web > Java y JSP > JSP/Servlets

Respuesta
 
Herramientas Desplegado
Antiguo 01-abr-2003, 04:46   #1 (permalink)
cllb está en el buen camino
 
Fecha de Ingreso: marzo-2003
Mensajes: 30
JSP para enviar mail

Hola:
Como puedo hacer un JSP para enviar un mail???Es que no tengo ni idea de Java....
Gracias
cllb está desconectado   Responder Citando
Antiguo 01-abr-2003, 05:50   #2 (permalink)
alcoholyvendas está en el buen camino
 
Fecha de Ingreso: abril-2003
Mensajes: 3
Alegría Ahi va!!!

Hola , kamarada, necesitas tener un par de jar's, para utilizar el maiul de JSP (mail.jar y activation.jar, consulta la página web de sun).

import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.http.HttpSession;
import javax.activation.*;
import java.net.URL;

/* Clase creada para el envío de correo mediante protocolo SMTP */
public class MiMail {
/**
* Parsea las direcciones de correo desde una cadena con las direcciones separadas por comas.
* @param addresses Cadena con las direcciones de correo
* @return Vector con las direcciones parseadas.
*/
static Vector parseAddresses( String sAddresses)
{
Vector vector = new Vector();
if ( sAddresses != null) {
StringTokenizer st = new StringTokenizer( sAddresses, ",");
while ( st.hasMoreTokens()) { vector.add( st.nextToken()); }
}
return vector;
}

/**
* Parsea los attachments desde una cadena con los attachments separados por comas.
* @param attachments Cadena con los attachments de correo
* @return Vector con los attachments parseados.
*/
static Vector parseAttachments( String sAttachments){return parseAddresses( sAttachments);}

public MiMail(){ }
/**
* Envia un correo por SMTP.
* @param sFromAddress Dirección del remitente.
* @param sToAddress Cadena con los destinatarios separados por comas.
* @param sSubject Asunto del correo.
* @param sBody Texto del correo.
* @param sBodyHTML Correo en html.
* @param sFileAttachments Cadena con los attachments separados por comas..
*/
protected static void send( String sFromAddress, String sToAddresses,
String sSubject, String sBody, String sBodyHTML, String sFileAttachments)
throws AddressException, MessagingException {
// Set this variable to be your SMTP host
String mailHost = "cmmail";
String sFrom = sFromAddress;
Vector vTo = parseAddresses( sToAddresses);
Vector vAttachments = parseAttachments( sFileAttachments);


//Get system properties
Properties props = System.getProperties();

//Specify the desired SMTP server
props.put("mail.smtp.host", mailHost);

// create a new Session object
Session sesion = Session.getInstance(props, null);
//sesion.setDebug(true);

// create a new MimeMessage object (using the Session created above)
Message message = new MimeMessage(sesion);

// Message add FROM
message.setFrom(new InternetAddress(sFrom));

// Message add TO
//message.setRecipients(Message.RecipientType.TO, new InternetAddress[] { new InternetAddress(sTo) });
for ( Enumeration eToAddresses = vTo.elements(); eToAddresses.hasMoreElements();) {
message.addRecipient( Message.RecipientType.TO, new InternetAddress( (String) eToAddresses.nextElement()));
}
// Message add Subject
message.setSubject(sSubject);

if ( vAttachments.size() == 0) { // No Multi-part mail
message.setText(sBody);
}
else{
//Necesitamos crear el objeto Multipart:
//Multipart multipart = new MimeMultipart();
Multipart multipart = new MimeMultipart( ( sBodyHTML == null || sBodyHTML.length() == 0) ? "mixed" : "related");

// Para la parte uno, creamos un BodyPart y seleccionamos el texto para
// ser un mensaje. Luego añadimos el BodyPart al Multipart recién creado.
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(sBody + "\n");
multipart.addBodyPart(messageBodyPart);

// Create part text, Fill sBodyHTML and add the part
if ( sBodyHTML != null ){//|| sBodyHTML.length() > 0) {
BodyPart messageHtmlTextPart = new MimeBodyPart();
messageHtmlTextPart.setDataHandler( new DataHandler( new SMTPByteArrayDataSource( sBodyHTML, "text/html")));
multipart.addBodyPart( messageHtmlTextPart);
}

// Create part attachments, Fill attachments and add the part
for ( Enumeration eAttachments = vAttachments.elements(); eAttachments.hasMoreElements();)
{
String nameFile = ( String) eAttachments.nextElement();
// Para la parte dos, necesitamos crear otro BodyPart, pero esta vez,
// necesitamos crear un DataSource para el fichero:
BodyPart messageAttachmentsPart = new MimeBodyPart();
DataSource source = new FileDataSource( nameFile);
// Usamos un objeto DataHandler para adjuntar los datos al mensaje.
// Simplemente creamos un DataHandler para la fuente y lo adjuntamos al
// mensaje:
messageAttachmentsPart.setDataHandler( new DataHandler(source));
// Debemos recordar seleccionar el nombre de fichero para el attachment.
// Esto permite al receptor conocer el nombre (y el tipo) del fichero
// recibido.
//messageAttachmentsPart.setHeader( "Content-ID", nameFile);

//messageAttachmentsPart.setFileName( ( new File( nameFile)).getName());
StringTokenizer ftokenizer = new StringTokenizer(nameFile,"\\/:");
String filename = ftokenizer.nextToken();
while(ftokenizer.hasMoreTokens()) filename = ftokenizer.nextToken();
messageAttachmentsPart.setFileName(filename);

//Adjuntamos la parte dos de la misma forma que la parte uno:
multipart.addBodyPart( messageAttachmentsPart);
}
// Para la parte dos, necesitamos crear otro BodyPart, pero esta vez,
// necesitamos crear un DataSource para el fichero:
//messageBodyPart = new MimeBodyPart();
//DataSource source = new FileDataSource(sFileAttachments);

// Usamos un objeto DataHandler para adjuntar los datos al mensaje.
// Simplemente creamos un DataHandler para la fuente y lo adjuntamos al
// mensaje:
//messageBodyPart.setDataHandler(new DataHandler(source));

// Debemos recordar seleccionar el nombre de fichero para el attachment.
// Esto permite al receptor conocer el nombre (y el tipo) del fichero
// recibido.
//messageBodyPart.setFileName(sAttachFile);
//messageBodyPart.setFileName("kk.txt");

//Adjuntamos la parte dos de la misma forma que la parte uno:
//multipart.addBodyPart(messageBodyPart);

// Y como paso final, antes de enviarlo, adjutamos el Multipart al Message:
message.setContent(multipart);
}
Transport.send(message);
// it worked!
}
/**
* Envia un correo por SMTP.
* @param host Dirección del host SMTP.
* @param sFromAddress Dirección del remitente.
* @param sToAddress Cadena con los destinatarios separados por comas.
* @param sSubject Asunto del correo.
* @param sBody Texto del correo.
*/
public static void sendMail( String sFromAddress,
String sToAddresses, String sSubject, String sBody) throws
AddressException, MessagingException {
send( sFromAddress, sToAddresses, sSubject, sBody, null, null);
}

/**
* Envia un correo por SMTP.
* @param sFromAddress Dirección del remitente.
* @param sToAddress Cadena con los destinatarios separados por comas.
* @param sSubject Asunto del correo.
* @param sBody Texto del correo.
* @param sFileAttachments Cadena con los attachments separados por comas..
*/
public static void sendMail( String sFromAddress,
String sToAddresses, String sSubject, String sBody, String sFileAttachments)
throws AddressException, MessagingException {
send( sFromAddress, sToAddresses, sSubject, sBody, null, sFileAttachments);
}

/**
* Envia un correo por SMTP.
* @param sFromAddress Dirección del remitente.
* @param sToAddress Cadena con los destinatarios separados por comas.
* @param sSubject Asunto del correo.
* @param sBody Texto del correo.
* @param sBodyHTML Correo en html.
* @param sFileAttachments Cadena con los attachments separados por comas..
*/
public static void sendMail( String sFromAddress,
String sToAddresses, String sSubject, String sBody, String sBodyHTML, String sFileAttachments)
throws AddressException, MessagingException {
send( sFromAddress, sToAddresses, sSubject, sBody, sBodyHTML, sFileAttachments);
}
}

Y tambien esta otra clase... (Ver Siguiente correo)


A ver si te sirve de algo.
alcoholyvendas está desconectado   Responder Citando
Antiguo 01-abr-2003, 05:50   #3 (permalink)
alcoholyvendas está en el buen camino
 
Fecha de Ingreso: abril-2003
Mensajes: 3
Alegría

Aqui va el resto, kolega , de la vega.

import java.util.*;
import java.io.*;
import javax.activation.*;

/** DataSource para cualquier texto plano. */
public class SMTPByteArrayDataSource implements DataSource {

private byte[] data;
private String type;

SMTPByteArrayDataSource( InputStream is, String type) {
this.type = type;
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
int ch;
while ( ( ch = is.read()) != -1) { os.write(ch);}
data = os.toByteArray();
} catch (IOException ioex){}
}

SMTPByteArrayDataSource( byte[] data, String type) {
this.data = data;
this.type = type;
}

SMTPByteArrayDataSource( String data, String type) {
this.data = data.getBytes();
this.type = type;
}

public InputStream getInputStream() throws IOException
{
if ( data == null) { throw new IOException( "No hay datos");}
return new ByteArrayInputStream( data);
}

public OutputStream getOutputStream() throws IOException {
throw new IOException( "No esta implementado");
}
public String getContentType() { return type;}
public String getName() {return "dummy";}
}
alcoholyvendas está desconectado   Responder Citando
Antiguo 01-abr-2003, 06:54   #4 (permalink)
cllb está en el buen camino
 
Fecha de Ingreso: marzo-2003
Mensajes: 30
Gracias lo voy a probar
cllb está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 11:15.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93