Buenas tardes:
Adjunto un par de clases para el envío de correos:
CuentaCorreo.java : es una clase que agrupa las propiedades mínimas
necesarias para poder enviar o recibir correo con autenticación.
EnviaMail.java: se encarga de, a partir de una cuenta origen y una
cuenta destino, enviar un correo con el asunto, texto y un archivo
adjunto. Si miras el método main verás un ejemplo de uso. Se
trataría de usar los métodos públicos de la clase desde un RPG o
montándose un main que recibiera los parámetros necesarios.
Es necesario para poder ejecutarlas, que esté en el CLASSPATH el archivo
mail.jar que puedes encontrar realizando una búsqueda en Google.
Saludos,
Jorge Merino.
Emilio G. Burgoa - OSSE - San Juan escribió:
Jorge...
Agradecería mucho que nos envíes un ejemplo de cómo
hacerlo y como se arma el ambiente de ejecución. Si hiciera falta algo
adicional en el AS400.
Saludos.
Emilio.
-----Mensaje original-----
*De:* [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
*Enviado el:* Miércoles, 19 de Noviembre de 2008 08:39 a.m.
*Para:* [EMAIL PROTECTED]; forum.help400
*Asunto:* Re: Envio de Correos desde AS400...
Buenos días:
Nosotros, la única forma que hemos encontrado de hacerlo en el
iSeries, es usando el api de java mail. Permite indicar el usuario, si
se requiere autenticación y la contraseña.
Si necesitas un ejemplo te podemos preparar uno.
Saludos,
Jorge Merino.
Emilio G. Burgoa - OSSE - San Juan escribió:
Estimados...
Necesito utilizar mi AS400 iSeries para hacer envíos de
correos electrónicos, utilizando un server SMTP externo, el cual
requiere autenticación.
He utilizado la herramienta SMTP, pero no me sirve, ya que
los envíos los realiza a un server con relay abierto, sin requerir
autenticación...
Conocen alguna Utilidad o manual de configuración para
realizar esta tarea directamente desde el AS400 ??
Desde ya muy agradecido por su atencion.
Saludos.
Emilio G. Burgoa
San Juan - Argentina
------------------------------------------------------------------------
__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
------------------------------------------------------------------------
/**
* Entidad Cuenta de correo
*/
public class CuentaCorreo {
private String nombreCuenta = "";
private String cuentaCorreo = "";
private String servidor = "";
private int servidorPuerto = 0;
private boolean requiereAutentificacion = false;
private String usuario = "";
private String password = "";
public CuentaCorreo(){
}
public CuentaCorreo(String nombreCuenta){
this.nombreCuenta = nombreCuenta;
}
@Id
public String getNombreCuenta() {
return nombreCuenta;
}
public void setNombreCuenta(String nombreCuenta) {
this.nombreCuenta = nombreCuenta;
}
public String getServidor() {
return servidor;
}
public void setServidor(String servidor) {
this.servidor = servidor;
}
public int getServidorPuerto() {
return servidorPuerto;
}
public void setServidorPuerto(int servidorPuerto) {
this.servidorPuerto = servidorPuerto;
}
public String getCuentaCorreo() {
return cuentaCorreo;
}
public void setCuentaCorreo(String cuentaCorreo) {
this.cuentaCorreo = cuentaCorreo;
}
public boolean isRequiereAutentificacion() {
return requiereAutentificacion;
}
public void setRequiereAutentificacion(boolean requiereAutentificacion)
{
this.requiereAutentificacion = requiereAutentificacion;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public CuentaCorreo clone(){
CuentaCorreo cuentaAux = new CuentaCorreo();
cuentaAux.setCuentaCorreo(this.cuentaCorreo);
cuentaAux.setServidor(this.servidor);
cuentaAux.setServidorPuerto(this.servidorPuerto);
cuentaAux.setUsuario(this.usuario);
cuentaAux.setRequiereAutentificacion(this.requiereAutentificacion);
cuentaAux.setPassword(this.password);
return cuentaAux;
}
public int compareTo(CuentaCorreo cuenta) {
return
this.getCuentaCorreo().compareTo(cuenta.getCuentaCorreo());
}
public boolean equals(CuentaCorreo cuenta){
return this.getCuentaCorreo().equals(cuenta.getCuentaCorreo());
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
import java.io.File;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Multipart;
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;
/**
* Clase para envío de un correo a partir de dos cuentas.
* Admite adjuntar un archivo al correo
* @author jmerino
*
*/
public class EnviaMail {
private CuentaCorreo cuentaOrigen;
private CuentaCorreo cuentaDestino;
private Properties props = null;
private String asunto = "";
private String mensajeTexto = "";
private File fichero;
/**
* Constructor
*/
public EnviaMail(){
props = new Properties();
}
/**
* Settes y Gettes para las propiedades
*/
public String getAsunto() {
return asunto;
}
public void setAsunto(String asunto) {
this.asunto = asunto;
}
public String getMensajeTexto() {
return mensajeTexto;
}
public void setMensajeTexto(String mensaje) {
this.mensajeTexto = mensaje;
}
public CuentaCorreo getCuentaOrigen() {
return cuentaOrigen;
}
public void setCuentaOrigen(CuentaCorreo cuentaOrigen) {
this.cuentaOrigen = cuentaOrigen;
}
public void setCuentaOrigen(String cuentaOrigen) {
if ( this.cuentaOrigen == null ||
this.cuentaOrigen.getCuentaCorreo().equals("") ){
// error
}
}
public CuentaCorreo getCuentaDestino() {
return cuentaDestino;
}
public void setCuentaDestino(String cuentaDestino) {
if ( this.cuentaDestino == null ||
this.cuentaDestino.getCuentaCorreo().equals("")
){
// error
}
}
public void setCuentaDestino(CuentaCorreo cuentaDestino) {
this.cuentaDestino = cuentaDestino;
}
public void addFichero(File fichero){
this.fichero = fichero;
}
/**
* Envío del correo desde la cuenta origen a la cuenta destino
* Con el asunto y el mensaje de texto.
* @return
*/
public boolean envia() {
System.out.println("Enviando mail a : " +
this.cuentaDestino.getCuentaCorreo());
try {
System.out.println("Asignación de los valores");
props.setProperty("mail.transport.protocol", "smtp");
props.put("mail.smtp.host",
this.cuentaOrigen.getServidor());
// Cambio del puerto del servidor si es necesario
if ( this.cuentaOrigen.getServidorPuerto() != 0)
props.put("mail.smtp.port",
Integer.toString(this.cuentaOrigen.getServidorPuerto()));
// Asignación del usuario y la contraseña para
autenticación
if ( this.getCuentaOrigen().isRequiereAutentificacion()
){
props.put("mail.smtp.user",
this.cuentaOrigen.getUsuario());
props.put("mail.smtp.password",
this.cuentaOrigen.getPassword());
props.put("mail.smtp.auth", "true");
} else {
props.put("mail.smtp.auth", "false");
}
Session session = Session.getDefaultInstance(props,
null);
// Debug del envío activo
session.setDebug(true);
// Creación del mensaje
MimeMessage message = new MimeMessage(session);
message.setFrom(new
InternetAddress(this.cuentaOrigen.getCuentaCorreo()));
InternetAddress itAdd = new
InternetAddress(this.cuentaOrigen.getCuentaCorreo());
System.out.println("Envío del mensaje desde :" +
itAdd.getAddress() + " " + itAdd.getPersonal()
+ " " + itAdd.getType());
InternetAddress to_address = new
InternetAddress(this.cuentaDestino.getCuentaCorreo());
InternetAddress itAdd2 = new
InternetAddress(this.cuentaOrigen.getCuentaCorreo());
System.out.println("A la dirección de internet :" +
to_address.toString());
System.out.println(Message.RecipientType.TO);
// Asunto
message.setSubject(this.asunto);
Multipart multipart = new MimeMultipart("mensaje");
// Parte de texto del correo
MimeBodyPart parteDeTexto = new MimeBodyPart();
parteDeTexto.setContent(this.mensajeTexto,"text/plain");
multipart.addBodyPart(parteDeTexto);
// En caso de tener que adjuntar un archivo, lo
añadimos al mensaje
if ( this.fichero != null ){
MimeBodyPart parteDeAdjunto = new
MimeBodyPart();
parteDeTexto.setContent(this.mensajeTexto,"text/plain");
parteDeAdjunto.attachFile(this.fichero);
multipart.addBodyPart(parteDeAdjunto);
}
message.setContent(multipart);
message.addRecipient(Message.RecipientType.TO,
to_address);
Transport transport = session.getTransport("smtp");
// Impresión de los valores para el envío
System.out.println("Propiedades asignadas para el
envío: ");
System.out.println("Host al que se envía : " +
props.get("mail.smtp.host"));
System.out.println("Host desde el que se envía : " +
props.get("mail.smtp.localhost"));
System.out.println("Puerto para smtp : " +
props.get("mail.smtp.port"));
System.out.println("Usuario para smtp: " +
props.get("mail.smtp.user"));
System.out.println("Password para smtp: " +
props.get("mail.smtp.password"));
System.out.println("Requiere autenticación ?: " +
props.get("mail.smtp.auth"));
// Realizamos la conexión según convenga (hay o no
autenticación)
if ( this.cuentaOrigen.isRequiereAutentificacion()){
System.out.println("La cuenta requiere
atenticación.");
transport.connect(this.cuentaOrigen.getServidor(),
this.cuentaOrigen.getUsuario(),
this.cuentaOrigen.getPassword());
} else {
System.out.println("La cuenta NO requiere
atenticación.");
transport.connect();
}
// Envío del correo
transport.sendMessage(message,
message.getAllRecipients());
transport.close();
return true;
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error :" + e);
return false;
}
}
/**
* @param args
* Ejecución de un envío con archivo adjunto
*/
public static void main(String[] args) {
try {
EnviaMail en = new EnviaMail();
// Cuenta origen
CuentaCorreo origen = new
CuentaCorreo("NOMBRE_CUENTA_ORIGEN");
origen.setCuentaCorreo("[EMAIL PROTECTED]");
origen.setServidor("mail.dominio.com");
origen.setServidorPuerto(587);
origen.setRequiereAutentificacion(true);
origen.setUsuario("[EMAIL PROTECTED]");
origen.setPassword("password");
// en.setCuentaDestino(args[1]);
CuentaCorreo destino = new
CuentaCorreo("NOMBRE_CUENTA_DESTINO");
destino.setCuentaCorreo("[EMAIL PROTECTED]");
en.setCuentaOrigen(origen);
en.setCuentaDestino(destino);
en.setAsunto("Asunto Test mail");
en.setMensajeTexto("Texto Test mail");
if ( en.envia() )
System.out.println("Correo Enviado a " +
en.getCuentaDestino().getCuentaCorreo());
else
System.out.println("El correo no se ha enviado
a " +
en.getCuentaDestino().getCuentaCorreo());
} catch (Exception e){
System.out.println("Error al conectar");
}
}__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400