2010-06-02 16 views
14

Estoy tratando de trabajar con el código de abajo:¿Cómo configuro un servidor de correo para usarlo con JavaMail?

import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import javax.mail.*; 
import javax.mail.internet.*; // important 
import javax.mail.event.*;  // important 
import java.net.*; 
import java.util.*; 

public class servletmail extends HttpServlet { 
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { 
     PrintWriter out=response.getWriter(); 
     response.setContentType("text/html"); 
     try { 
      Properties props=new Properties(); 
      props.put("mail.smtp.host","localhost"); // 'localhost' for testing 
      Session session1 = Session.getDefaultInstance(props,null); 
      String s1 = request.getParameter("text1"); //sender (from) 
      String s2 = request.getParameter("text2"); 
      String s3 = request.getParameter("text3"); 
      String s4 = request.getParameter("area1"); 
      Message message =new MimeMessage(session1); 
      message.setFrom(new InternetAddress(s1)); 
      message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(s2,false)); 
      message.setSubject(s3); 
      message.setText(s4);   
      Transport.send(message); 
      out.println("mail has been sent"); 
     } catch(Exception ex) { 
      System.out.println("ERROR....."+ex); 
     } 
    } 
} 

estoy usando mail.jar y activation.jar. Pero no puedo entender cómo debo configurarlo con un servidor de correo. ¿Qué servidor de correo debería usar? ¿Podré enviar un correo electrónico usando el código anterior? ¿Cuáles son los requisitos de un servidor de correo? ¿Cómo debo configurarlo?

Respuesta

22

Para empezar, necesita un SMTP server. Se requiere poder enviar correos electrónicos. De la misma manera que necesita un servidor HTTP para poder servir un sitio web. Aparentemente ya tiene un servidor HTTP (con un servletcontainer), pero aún no tiene un servidor SMTP configurado.

Puede utilizar el servidor SMTP asociado con su cuenta de correo electrónico existente, como la de su ISP o buzones públicos como Gmail, Yahoo, etc. Puede encontrar detalles de conexión SMTP en su documentación. Por lo general, solo necesita saber el nombre de host y el número de puerto . El nombre de usuario/contraseña son exactamente los mismos que los de su cuenta de correo electrónico.

El nombre de host y número de puerto a continuación, se debe establecer como propiedades SMTP para JavaMail:

Properties properties = new Properties(); 
properties.put("mail.transport.protocol", "smtp"); 
properties.put("mail.smtp.host", "smtp.example.com"); // smtp.gmail.com? 
properties.put("mail.smtp.port", "25"); 

El nombre de usuario/contraseña se debe utilizar en una Authenticator de la siguiente manera:

properties.put("mail.smtp.auth", "true"); 
Authenticator authenticator = new Authenticator() { 
    protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication("yourusername", "yourpassword"); 
    } 
}; 

Entonces usted puede conseguir la sesión de correo de la siguiente manera:

Session session = Session.getDefaultInstance(properties, authenticator); 

Con la cuenta de su I SP o buzones públicos, sin embargo, está restringido a usar su propia dirección en el campo From del correo electrónico y, por lo general, también en la cantidad de correos electrónicos que puede enviar en determinados intervalos. Si desea evitar esto, necesita instalar su propio servidor SMTP, por ejemplo Apache James, que está basado en Java, o Microsoft Exchange, etc.

Después de todo, te sugiero que obtengas un JavaMail tutorial para que entiendas mejor.

+0

bien ... thnaks .. – simplyblue

+0

Hola @BalusC Configuré el servidor de correo como se mencionó, pero obtengo 'javax.mail.SendFailedException: direcciones inválidas; excepción anidada es: \t com.sun.mail.smtp.SMTPAddressFailedException: 450 4.1.1 <[email protected]>: dirección del destinatario rechazada: usuario desconocido en table' buzón virtual excepción. Está funcionando bien si estoy enviando correo en el mismo dominio. ¿Alguna idea? \t ' – amarmishra

Cuestiones relacionadas