// package ...; import java.util.*; import java.io.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class Emailer { private String smptServer = ""; public void setSMTP_Server(String server) { smptServer = server; } public String getSMTP_Server() { return smptServer; } public void enviarEmail ( String efrom, String eto, String esubject, String emsgtext) throws IOException { enviarEmail (efrom, eto, esubject, emsgtext, null, null); } public void enviarEmail ( String efrom, String eto, String esubject, String emsgtext, String contenidoAttach, String nombreFicheroAttach) throws IOException { // Enviar e-mail Properties props = new Properties(); props.put("mail.smtp.host", smptServer); Session session = Session.getDefaultInstance(props, null); String from = efrom; String to = eto; String subject = esubject; String msgText = emsgtext; try { // create a message Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(from)); InternetAddress[] address = {new InternetAddress(to)}; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject(subject); msg.setSentDate(new Date()); // If the desired charset is known, you can use // setText(text, charset) msg.setText(msgText); if (contenidoAttach != null && nombreFicheroAttach != null) { // Instantiate a Multipart object ByteArrayInputStream bin = new ByteArrayInputStream(contenidoAttach.getBytes()); MimeBodyPart b1 = new MimeBodyPart(bin); b1.setFileName(nombreFicheroAttach); MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(b1); msg.setContent(mp); // add Multipart } Transport.send(msg); } catch (MessagingException mex) { System.out.println("\n--Capturada en Emailer.java"); mex.printStackTrace(); System.out.println(); Exception ex = mex; do { if (ex instanceof SendFailedException) { SendFailedException sfex = (SendFailedException)ex; Address[] invalid = sfex.getInvalidAddresses(); if (invalid != null) { System.out.println(" ** Invalid Addresses"); if (invalid != null) { for (int i = 0; i < invalid.length; i++) System.out.println(" " + invalid[i]); } } Address[] validUnsent = sfex.getValidUnsentAddresses(); if (validUnsent != null) { System.out.println(" ** ValidUnsent Addresses"); if (validUnsent != null) { for (int i = 0; i < validUnsent.length; i++) System.out.println(" "+validUnsent[i]); } } Address[] validSent = sfex.getValidSentAddresses(); if (validSent != null) { System.out.println(" ** ValidSent Addresses"); if (validSent != null) { for (int i = 0; i < validSent.length; i++) System.out.println(" "+validSent[i]); } } } System.out.println(); } while ((ex = ((MessagingException)ex).getNextException())!= null); } } /** Banco de pruebas. Librerias necesarias: mail.jar y activation.jar Para comprobar recepción ir a http://mail.bit-net.org:8383 Username: apei@bit-net.org Password: apei */ public static void main(String[] args) throws Exception { Emailer e = new Emailer(); e.setSMTP_Server("mailhost.terra.es"); String msg = "Esto es una prueba de Emailer." + "Adiós"; e.enviarEmail("yo@terra.es", "apei@bit-net.org", "Prueba Emailer", msg); System.out.println("Mail enviado. Pulse intro para concluir."); System.in.read(); } }