style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Envio de correo electronico usando java o sendmail

Hola a todos.

Recientemente me encuentro una aplicacion creada por un compañero que tiene un problema, al momento de cambiarla de server resulta que dejo de enviar el correo electronico respectivo. alguno de ustedes sabe como se genera el envio de correo electronico por medio de Java. estoy usando Resin y la consola de la 1.0.7

Agrego un poco del codigo, me comentaban que es necesario mandarlo por sendmail o algo por el estilo pero la verdad no se como hacerlo.

Espero me puedan apoyar. Un saludo a todos.....

esto lo tengo un una carpeta GLOBAL/SERVICES con dos archivos... SendFileEmail.java y SendHTMLemail.java creo que el sistemita tiene varias inconsistencias. Buscando con amigos nadie le sabe al JAVA.

Cuando hago algun cambio en el java me manda que no tengo la libreria javax.mail, pero si la tengo asignada.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

config

si ya estaba funcionando y dejó de funcionar, seguro es un problema de configuración. Y en este caso además probablemente no es ni siquiera configuración en parámetros de la aplicación sino en el servidor de mail (o algo en el contenedor también). Incluso si tuvieran en código duro los parámetros de conexión al servidor de correo para los envíos (username, password, ip+puerto), si desde el nuevo servidor se ve el servidor de correo, no es necesario recompilar; sólo que tuvieran que cambiar la ip y/o puerto tendrían que recompilar, si están en código duro. Si los tienen afuera en un archivo de XML o un properties o algo, tienen que modificar ahí los datos y reempaquetar el war o lo que sea que están usando.

Un poco más de información hubiera sido útil: qué error sale en el log, por ejemplo, porque ahí generalmente puedes ver si es conexión denegada o no hay ruta al host destino o el username/password fue rechazado etc.

Imagen de Mikeklderon

mas informacion

sabes que estoy montando la app en resin, no me genera logs ya que no esta configurado el log, se manejas teamviewer estaria excelente poderte contactar, ya tengo dias con este error y malamente el compañero que lo diseño no me quiere decir por que medio generaba el envio, igual salio de aqui de mala forma lo comprendo.

Veo que eres miembro activo de la comunidad creo que tienes mucha experiencia gracias por el apoyo.

Imagen de francisco.santiagoj

@Mikeklderon

Puedes poner código? poner el código con el servidor anterior y medio funciona y el código con nuevo servidor que no funciona, como dice @ezamudio debe ser problema de configuración ya sea en el código o en el server.

Imagen de Mikeklderon

El servidor anterior fue

El servidor anterior fue deshabilitado de hecho ya le borraron todo el contenido pude rescatar las aplicaciones pero lo monte en otro servidor bajo windows 2003 server, el anterior era linux. pongo el codigo que manda llamar la funcion sendmail.

Por fines de seguridad no pongo el codigo ya que es una app que no es mia y me podria meter en problemas perosi existe otro medio por el cual pueda contactarlos con gusto lo podriamos ver,

Algo que tambien puede llamar la atencion es que la herramienta estaba como https y ahora la monte como http ya que el ssl ya caduco y realmente no era necesaria tanta seguridad en la app.

Imagen de ezamudio

sendmail

O sea que el código usa el programa sendmail? Si es así, pues es obvio que ese es tu problema.

sendmail viene instalado en Linux (y si ya no viene, es muy fácil instalarlo) pero seguro no viene en Windows. Lo que deberían hacer es ya no usar sendmail, sino SMTP (pensé que eso usaban ya que mencionabas el mail.jar)

Imagen de Mikeklderon

Ese es el problema

la persona que genero el codigo me dice que lo envia por medio de sendmail pero estoy checando por todos los medios la app y no esta por ningun lado. creo que es una mentira, para tratar de perderme. No se encontraba la app ni en resin ni en xampp ni en el servidor hasta donde puedo ver.

El problema es que soy muy nuevo en java ya que deje de usarlo hace algun tiempo ya me dedicaba a otras cosas jojo... siempre es bueno regresar al camino.

Es correcto creo que usa SMTP ya que esta la libreria mail.jar dentro de Resin que es en donde tengo montada la app.

Nada mas nada no funciona. se supone que la app genera un pdf, y despues de eso puedes darle boton enviar y manda el corre electronico de ese pdf al usuario.

Imagen de francisco.santiagoj

Clase MailSender

Cual server es el que cambiaron el servidor de aplicaciones o el servidor del correo?,

La forma en la que yo mando correo electrónico es la siguiente:

Spring
Archivo Properties: contiene los datos del servidor

mail.domain=gmail.com
mail.host=smtp.gmail.com
mail.port=587
mail.username=login_de_gmail
mail.password=contraseña_de_gmail

en mi applicationcontext.xml un bean para enviarle los datos del .properties a la clase que envía el correo.

<bean id="mailSender" class=".mail.MailSender">
                <property name="domain" value="${mail.domain}"/>
                <property name="host" value="${mail.host}"/>
                <property name="port" value="${mail.port}"/>
                <property name="username" value="${mail.username}"/>
                <property name="password" value="${mail.password}"/>   
        </bean>

Ahora si la clase MainSender: que es la encargada de hacer toda la magia

package mail;

import java.util.ArrayList;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSender {

         protected String domain;
         protected String host;
         protected String port;
         protected String username;
         protected String password;
       
        public MailSender(String domain, String host, String port, String username,
                        String password) {
                super();
                this.domain = domain;
                this.host = host;
                this.port = port;
                this.username = username;
                this.password = password;
        }
        public String getDomain() {
                return domain;
        }
        public void setDomain(String domain) {
                this.domain = domain;
        }
        public String getHost() {
                return host;
        }
        public void setHost(String host) {
                this.host = host;
        }
        public String getPort() {
                return port;
        }
        public void setPort(String port) {
                this.port = port;
        }
        public String getUsername() {
                return username;
        }
        public void setUsername(String username) {
                this.username = username;
        }
        public String getPassword() {
                return password;
        }
        public void setPassword(String password) {
                this.password = password;
        }
       
        public MailSender() {
               
        }
        public void sendEmail(ArrayList<String> to, String subject, String content){
/*(1)*/
               
                Properties properties = new Properties();
        properties.setProperty("mail.smtp.host", host);
        properties.setProperty("mail.smtp.starttls.enable", "true");
       
                properties.setProperty("mail.smtp.port", port);
        properties.setProperty("mail.smtp.user", username);
        properties.setProperty("mail.smtp.auth", "true");
                               
        Session session = Session.getInstance(properties);
        session.setDebug(true);
        /*(3)*/
        MimeMessage message  = new MimeMessage(session);
        try{
                message.setFrom(new InternetAddress(username));
                message.setSubject(subject);
                InternetAddress[] address = new InternetAddress[to.size()];
                for(int i = 0; i < to.size(); i++){
                        address[i] = new InternetAddress(to.get(i));                   
                }
                message.setRecipients(Message.RecipientType.TO, address);
                message.setText(content, "ISO-8859-1", "html");
                /*(4)*/
                Transport transport = session.getTransport("smtp");
                transport.connect(username, password);
                transport.sendMessage(message, message.getAllRecipients());
                transport.close();
        }
        catch (Exception e) {
                       
                }
               
        }
}

En el método sendEmail le paso como parámetro el destinatario, el asunto y el contenido del correo, y lo usas así:

ArrayList<String> to = new ArrayList<String>();        
                String subject;        
                StringBuilder content = new StringBuilder();
               
                /*
                 * Creamos los contactos a los que se enviara el correo
                 */

                to.add("contacto@gmail.com");          
                to.add("otrocorreo@gmail.com");
               
                /*
                 * Creamos el titulo del mensaje
                 */

                subject = "Asunto";
               
                /*
                 * Creamos el contenido del mensaje
                 */

                content.append("aquí pones todo el código en html,);
                content.append("
con etiquetas y todo");
               
                //ahora si mandas los datos a la clase de arriba
       
                mailSender.sendEmail(to, subject, content.toString());

Entonces si cambiaste de servidor de correo lo que puede estar al es el puerto, el host, el nombre de usuario, la contraseña.

Si el problema es el servidor de aplicaciones, se me puede ocurrir que el problema sea falta de la clase javax.mail

Imagen de Mikeklderon

ese es el problema que el

ese es el problema que el cambio fue global existio cambio del servidor de correo y cambio en el servidor de aplicaciones.

Todas las demas app ya las monte y estan funcionando sin problemas pero ninguna manejaba envio de correo electronico hasta esta. el codigo que me mandas me sera de mucha utilidad para mis app´s.

La app de la que estamos hablando usa dos archivos uno SendHTMLEmail.java y otro SendFileEmail.java si intento compilarlas me manda 19 errores que falta la clase javax.mail y otras pero ya estan definidas en la libreria.

te mandare el codigo directo

Imagen de francisco.santiagoj

Errores

Postea los errores que te manda.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">