Cualquier inquietud no duden en preguntar...
Para el correctu funcionamiento de esta clase es necesario descargar la libreria javamail-1.4.3 e instanciar mail.jar
Abstraccion del medio de envio Correo Electronico.
Para el correctu funcionamiento de esta clase es necesario descargar la libreria javamail-1.4.3 e instanciar mail.jar
Abstraccion del medio de envio Correo Electronico.
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
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;
import router.Bin.Agentes.clSistema;
/***
* Clase que representa el mdio de envio correo electronico
* @author Diego Fernando Carvajal Rodriguez
* @version 001
* @see #################
* @since 03/11/2010 - JDK 1.6
*/
public class clCorreo {
private List<String> lsPrtclo;
private String sUsrio;
private String sClve;
private String sPrtclo;
private int iTpoEnvio;// 1 == Correo; 2 == ftp
private int iPrto;
private String sDe;
private List<String> lsPra;
private List<String> lsCpiaOclta;
private String sTxto;
private String sAsnto;
private String sHost;
private BodyPart bpAdjnto;
private BodyPart bpTxto;
private MimeMultipart mmCrpo;
private String sDscpcionError;
private Properties pPrpddes;
private boolean bTls;
private boolean bAtntccion;
private boolean bLog;
private Session sSssion;
private Transport tEnvio;
private MimeMessage msCrreo;
private String sTpoArchvo;
private String sEstndar;
private List<String> lsCntndo;
private clPlano oclPlno;
private String arsPra2[];
private String arsCpiaOclta[];
private int iCont;
private DataSource dsArchvo;
private List<File> lsArchvo;
private List <String> lsPrtclosSprtdos;
private boolean bEstdo;
public clCorreo(){
this.lsPrtclo = new ArrayList();
this.lsCntndo = new ArrayList();
this.lsPrtclo = lsProtocolosSoportados();
this.sUsrio = "";
this.sClve = "";
this.sPrtclo = "";
this.iPrto = -1;
this.sDe = "";
this.lsPra = new ArrayList();
this.arsPra2 = null;
this.arsCpiaOclta = null;
this.lsCpiaOclta = new ArrayList();
this.sTxto = "";
this.sHost = "";
this.bpAdjnto = new MimeBodyPart();
this.bpTxto = new MimeBodyPart();
this.mmCrpo = new MimeMultipart();
this.sDscpcionError = "";
this.pPrpddes = new Properties();
this.bTls = false;
this.bAtntccion = false;
this.sSssion = null;
this.bLog = false;
this.tEnvio = null;
this.sAsnto = "";
this.msCrreo = null;
this.sTpoArchvo = "";
this.sEstndar = "";
this.oclPlno = new clPlano();
this.arsPra2 = null;
this.arsCpiaOclta = null;
this.iCont = 0;
this.dsArchvo = null;
this.lsArchvo = new ArrayList();
this.lsPrtclosSprtdos = new ArrayList();
this.bEstdo = true;
this.iTpoEnvio = 0;
}
public int getiTpoEnvio() {
return this.iTpoEnvio;
}
public void setiTpoEnvio(int iTpoEnvio) {
this.iTpoEnvio = iTpoEnvio;
}
public boolean isbAtntccion() {
return bAtntccion;
}
public void setbAtntccion(boolean bAtntccion) {
this.bAtntccion = bAtntccion;
}
public String getsEstndar() {
return sEstndar;
}
public void setsEstndar(String sEstndar) {
this.sEstndar = sEstndar;
}
public String getsAsnto() {
return sAsnto;
}
public void setsAsnto(String sAsnto) {
this.sAsnto = sAsnto;
}
public List<String> getLsCntndo() {
return lsCntndo;
}
public void setLsCntndo(List<String> lsCntndo) {
this.lsCntndo = lsCntndo;
}
public String getsTpoArchvo() {
return sTpoArchvo;
}
public void setsTpoArchvo(String sTpoArchvo) {
this.sTpoArchvo = sTpoArchvo;
}
public String getsClve() {
return this.sClve;
}
public boolean isbLog() {
return this.bLog;
}
public boolean isbTls() {
return this.bTls;
}
public int getiPrto() {
return this.iPrto;
}
public List<String> getLsCpiaOclta() {
return this.lsCpiaOclta;
}
public List<String> getLsPrtclo() {
return this.lsPrtclo;
}
public String getsDe() {
return this.sDe;
}
public String getsHost() {
return this.sHost;
}
public String getsPrtclo() {
return this.sPrtclo;
}
public String getsTxto() {
return this.sTxto;
}
public String getsUsrio() {
return this.sUsrio;
}
public void setbLog(boolean bLog) {
this.bLog = bLog;
}
public void setbTls(boolean bTls) {
this.bTls = bTls;
}
public void setiPrto(int iPrto) {
this.iPrto = iPrto;
}
public void setLsCpiaOclta(List<String> lsCpiaOclta) {
this.lsCpiaOclta = lsCpiaOclta;
}
public void setsClve(String sClve) {
this.sClve = sClve;
}
public void setsDe(String sDe) {
this.sDe = sDe;
}
public void setsHost(String sHost) {
this.sHost = sHost;
}
public void setsPrtclo(String sPrtclo) {
this.sPrtclo = sPrtclo;
}
public void setsTxto(String sTxto) {
this.sTxto = sTxto;
}
public void setsUsrio(String sUsrio) {
this.sUsrio = sUsrio;
}
public List<String> getLsPra() {
return this.lsPra;
}
public void setLsPra(List<String> lsPra) {
this.lsPra = lsPra;
}
/***
* Metodo para cargar los protocolos del servidor de correo
* @return lista de protocolos soportados por la aplicacion
*/
private List <String> lsProtocolosSoportados(){
this.lsPrtclosSprtdos = new ArrayList();
this.lsPrtclosSprtdos.add("smtp");
this.lsPrtclosSprtdos.add("pop3");
this.lsPrtclosSprtdos.add("imap");
return this.lsPrtclosSprtdos;
}
/***
* Metodo que envia un correo electronico
* @param lsCntndo Lista con el contenido escrito del correo
* @param lsArchvo Lista con el contenido adjunto del correo
* @return boolean true == proceso exitoso; false == proceso fallido
*/
public synchronized boolean fnbEnviarCorreo(List <String> lsCntndo, List <File> lsArchvo){
this.bEstdo = true;
this.bEstdo = fnbCorreo(lsCntndo, lsArchvo);
if(this.bEstdo){
try {
this.tEnvio = this.sSssion.getTransport(this.sPrtclo);
if(this.bAtntccion){
this.tEnvio.connect(this.sUsrio, this.sClve);
}
Transport.send(this.msCrreo, this.msCrreo.getAllRecipients());
this.tEnvio.close();
} catch (NoSuchProviderException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbEnviarCorreo:1");
this.bEstdo = false;
} catch (MessagingException ex){
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbEnviarCorreo:2");
this.bEstdo = false;
}
}
return this.bEstdo;
}
/***
* Metodo que envia un correo electronico
* @param lsCntndo Lista con el contenido escrito del correo
* @param flArchvo Archivo tipo File con el contenido adjunto
* @return boolean true == proceso exitoso; false == proceso fallido
*/
public synchronized boolean fnbEnviarCorreo(List <String> lsCntndo, File flArchvo, clSistema oclSstma){
this.bEstdo = true;
this.lsArchvo = new ArrayList();
this.lsArchvo.add(flArchvo);
this.bEstdo = fnbCorreo(lsCntndo, this.lsArchvo);
if(this.bEstdo){
try {
this.tEnvio = this.sSssion.getTransport(this.sPrtclo);
if(this.bAtntccion){
this.tEnvio.connect(this.sUsrio, this.sClve);
}
Transport.send(this.msCrreo, this.msCrreo.getAllRecipients());
this.tEnvio.close();
} catch (NoSuchProviderException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbEnviarCorreo:1");
this.oclPlno.fnbMueveArchivoWin(flArchvo, oclSstma.getsDrccionRpstrio()+"noProcesado");
this.bEstdo = false;
} catch (MessagingException ex){
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbEnviarCorreo:2");
this.oclPlno.fnbMueveArchivoWin(flArchvo, oclSstma.getsDrccionRpstrio()+"noProcesado");
this.bEstdo = false;
}
}
return this.bEstdo;
}
/***
* Metodo que envia un correo electronico
* @param flArchvo Archivo tipo File con el contenido adjunto
* @return boolean true == proceso exitoso; false == proceso fallido
*/
public synchronized boolean fnbEnviarCorreo(File flArchvo, clSistema oclSstma){
this.bEstdo = true;
this.lsArchvo = new ArrayList();
this.lsArchvo.add(flArchvo);
this.bEstdo = fnbCorreo(this.lsCntndo, this.lsArchvo);
if(this.bEstdo){
try {
this.tEnvio = this.sSssion.getTransport(this.sPrtclo);
if(this.bAtntccion){
this.tEnvio.connect(this.sUsrio, this.sClve);
}
Transport.send(this.msCrreo, this.msCrreo.getAllRecipients());
this.tEnvio.close();
} catch (NoSuchProviderException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbEnviarCorreo:3");
this.bEstdo = false;
this.oclPlno.fnbMueveArchivoWin(flArchvo, oclSstma.getsDrccionRpstrio()+"noProcesado");
} catch (MessagingException ex){
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbEnviarCorreo:4");
this.oclPlno.fnbMueveArchivoWin(flArchvo, oclSstma.getsDrccionRpstrio()+"noProcesado");
this.bEstdo = false;
}
}
return this.bEstdo;
}
/***
* Metodo que envia un correo electronico
* @param lsCntndo Lista con el contenido escrito del correo
* @return boolean true == proceso exitoso; false == proceso fallido
*/
public synchronized boolean fnbEnviarCorreo(List <String> lsCntndo){
this.bEstdo = true;
this.lsArchvo = new ArrayList();
this.bEstdo = fnbCorreo(lsCntndo, this.lsArchvo);
if(this.bEstdo){
try {
this.tEnvio = this.sSssion.getTransport(this.sPrtclo);
if(this.bAtntccion){
this.tEnvio.connect(this.sUsrio, this.sClve);
}
Transport.send(this.msCrreo, this.msCrreo.getAllRecipients());
this.tEnvio.close();
} catch (NoSuchProviderException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbEnviarCorreo:5");
this.bEstdo = false;
} catch (MessagingException ex){
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbEnviarCorreo:6");
this.bEstdo = false;
}
}
return this.bEstdo;
}
/***
* Metodo que construye el correo
* @param lsCntndo Lista con el contenido escrito del correo
* @param lsArchvo Lista con el contenido adjunto del correo
* @return boolean true == se construllo el correo exitosamente; false == fallo la construccion del correo
*/
private boolean fnbCorreo(List <String> lsCntndo, List <File> lsArchvo){
this.bEstdo = true;
this.bEstdo = fnbCargaParametros();
if(this.bEstdo){
this.bEstdo = fnbCuerpo(lsCntndo, lsArchvo);
if(this.bEstdo){
this.iCont = 0;
try {
this.msCrreo = new MimeMessage(this.sSssion);
this.msCrreo.setFrom(new InternetAddress(this.sDe));
if(!this.lsPra.isEmpty()){
this.arsPra2 = this.lsPra.get(0).split("\\;");
for(this.iCont = 0; this.iCont<this.arsPra2.length; this.iCont++){
this.msCrreo.addRecipient(RecipientType.TO, new InternetAddress(this.arsPra2[this.iCont]));
}
}else{
this.sDscpcionError = "El correo no tiene destinatarios";
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbCorreo:1");
this.bEstdo = false;
}
if(this.bEstdo && !this.lsCpiaOclta.isEmpty()){
this.arsCpiaOclta = this.lsCpiaOclta.get(0).split("\\;");
for(this.iCont = 0; this.iCont<this.arsCpiaOclta.length; this.iCont++){
this.msCrreo.addRecipient(RecipientType.BCC, new InternetAddress(this.arsCpiaOclta[this.iCont]));
}
}
this.msCrreo.setSubject(this.sAsnto);
this.msCrreo.setContent(this.mmCrpo);
} catch (MessagingException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbCorreo:2");
this.bEstdo = false;
}
}
}
return this.bEstdo;
}
/***
* Metodo que carga los parametros basicos previo al envio de correo
* @return boolean true == si los parametros estan cargados, false == si los parametros no se encuentran cargados
*/
private boolean fnbCargaParametros(){
this.bEstdo = true;
if(!this.sHost.equals("")){
this.pPrpddes.setProperty("mail."+this.sPrtclo+".host", this.sHost);
}else{
this.bEstdo = false;
}
this.pPrpddes.setProperty("mail."+this.sPrtclo+".starttls.enable", String.valueOf(this.bTls));
if(this.bEstdo && this.iPrto >= 0){
this.pPrpddes.setProperty("mail."+this.sPrtclo+".port", String.valueOf(this.iPrto));
}else{
this.bEstdo = false;
}
if(this.bEstdo && !this.sUsrio.equals("")){
this.pPrpddes.setProperty("mail."+this.sPrtclo+".user", this.sUsrio);
}else{
this.bEstdo = false;
}
if(this.bEstdo && this.bAtntccion){
this.pPrpddes.setProperty("mail."+this.sPrtclo+".auth", String.valueOf(this.bAtntccion));
}
this.sSssion = Session.getDefaultInstance(this.pPrpddes);
this.sSssion.setDebug(this.bLog);
return this.bEstdo;
}
/***
* Metodo que se encarga de crear el cuerpo del mensaje
* @param lsCntndo Lista con el contenido escrito del correo
* @param lsArchvo Lista con el contenido adjunto del correo
* @return boolean true == si la construccion del cuerpo fue exitosa; false == si la construccion del cuerpo fue fallida
*/
private boolean fnbCuerpo(List <String> lsCntndo, List <File> lsArchvo){
this.bEstdo = true;
this.mmCrpo = new MimeMultipart();
try {
if(lsCntndo.size() > 0){
this.bEstdo = fnbAgregaTexto(lsCntndo);
this.mmCrpo.addBodyPart(this.bpTxto);
}
if(this.bEstdo && lsArchvo.size() > 0){
this.bEstdo = fnbAgregaAdjunto(lsArchvo);
this.mmCrpo.addBodyPart(this.bpAdjnto);
}
} catch (MessagingException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbCuerpo:1");
this.bEstdo = false;
}
return this.bEstdo;
}
/***
* Metodo que agrega el texto al cuerpo del correo
* @param lsCntndo Lista que contiene el texto que va en el cuerpo del correo
* @return boolean true == proceso de escritura exitoso; false == proceso de escritura fallido
*/
private boolean fnbAgregaTexto(List <String> lsCntndo){
this.bEstdo = true;
this.iCont = 0;
this.bpTxto = new MimeBodyPart();
try {
for(this.iCont = 0; this.iCont<lsCntndo.size(); this.iCont++){
this.bpTxto.setText(lsCntndo.get(this.iCont));
}
} catch (MessagingException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbAgregaTexto:1");
this.bEstdo = false;
}
return this.bEstdo;
}
/***
* Metodo que adjunta archivos al cuerpo del correo
* @param lsArchvo Lista que contiene los archivos que van a ir adjuntos en el correo
* @return boolean true == proceso de adjuntar archivos exitoso; false == proceso de adjuntar archivos fallido
*/
private boolean fnbAgregaAdjunto(List <File> lsArchvo){
this.bEstdo = true;
this.iCont = 0;
this.dsArchvo = null;
this.bpAdjnto = new MimeBodyPart();
try {
for(this.iCont = 0; this.iCont<lsArchvo.size(); this.iCont++){
this.dsArchvo = new FileDataSource(lsArchvo.get(this.iCont).getAbsolutePath());
this.bpAdjnto.setDataHandler(new DataHandler(this.dsArchvo));
this.bpAdjnto.setFileName(lsArchvo.get(this.iCont).getName());
}
} catch (MessagingException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
this.oclPlno.fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clCorreo:fnbAgregaAdjunto:1");
this.bEstdo = false;
}
return this.bEstdo;
}
}
No hay comentarios:
Publicar un comentario