2011-11-01 22 views
6

Estoy trabajando en un proyecto web usando Tomcat 6 como mi servidor web y JSP como frontend. Deseo enviar un correo del servidor web a una cuenta de correo electrónico. ¿Cómo puedo conseguir esto?enviando correo desde apache tomcat

Para empezar, aquí está mi forma de JSP:

<form name="forgotpassword" onsubmit="return valid()">  
    <table> 
    <tr> 
     <td>Enter Employee ID</td> 
     <td><input type="text" name="emp_id" size="50"/></td> 
    </tr> 
    <tr> 
     <td>Enter Your Email Address</td> 
     <td><input type="text" name="mailid" size="50"/></td> 
    </tr> 
    <tr> 
     <td><input type="submit"style="margin-left:100px" name="forgot" value="SUBMIT">&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" name="cancel" value="RESET"/></td> 
    </tr> 
    </table> 
</form> 
+0

Se llama "servidor de aplicaciones", no "servidor web" y sobre todo no "servidor de correo" :-) – Lachezar

+0

@Lucho: Tomcat no es un servidor de aplicaciones. Es un contenedor de servlets simple. – BalusC

+0

http://www.tomcatexpert.com/blog/2010/06/09/tomcat-application-server – Lachezar

Respuesta

13

Usando Java-Mail API.

  • Take insumos requeridos de JSP,
  • mensaje a servlet método de servicio
  • invocación para enviar Correo de Servlet
  • Use Java Mail API para enviar correos electrónicos f rom método de servicio, a quick example
+0

Además, puede encontrar más información en [aquí] (http://cs-sharenotes.blogspot.ca/2016 /02/how-connect-gmail-javamail-api.html) –

1

Esta es la forma más simple, usando MailToURLConnection. No se necesitan bibliotecas adicionales.

public static void sendMail(String from, String to, String subject, String body, String[] headers) throws IOException { 
    System.setProperty("mail.host", "localhost"); 

    URL u = new URL("mailto:"+to); 
    MailToURLConnection con = (MailToURLConnection)u.openConnection(); 
    OutputStream os = con.getOutputStream(); 
    OutputStreamWriter w = new OutputStreamWriter(os); 

    DateFormat df = new SimpleDateFormat("E, d MMM yyyy H:mm:ss Z"); 
    Date d = new Date(); 
    String dt = df.format(d); 
    String mid = d.getTime()+from.substring(from.indexOf('@')); 

    w.append("Subject: "+subject+"\r\n"); 
    w.append("Date: " +dt+ "\r\n"); 
    w.append("Message-ID: <"+mid+ ">\r\n"); 
    w.append("From: "+from+"\r\n"); 
    w.append("To: <"+to+">\r\n"); 
    if(headers!=null) { 
     for(String h: headers) 
     w.append(h).append("\r\n"); 
    } 
    w.append("\r\n"); 

    w.append(body.replace("\n", "\r\n")); 
    w.flush(); 
    w.close(); 
    os.close(); 
    con.close(); 
} 
3

Esto funciona bien (ejemplo Gmail):

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

public class SendMail { 

    public static void main(String[] args) { 

     final String username = "your_usename_goes_here"; 
     final String password = "your_password_goes_here"; 

     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.port", "587"); 

     Session session = Session.getInstance(props, 
      new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(username, password); 
      } 
      }); 

     try { 

      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("[email protected]")); 
      message.setRecipients(Message.RecipientType.TO, 
       InternetAddress.parse("[email protected]")); 
      message.setSubject("A testing mail header !!!"); 
      message.setText("Dear Mail Crawler," 
       + "\n\n No spam to my email, please!"); 

      Transport.send(message); 

      System.out.println("Done"); 

     } catch (MessagingException e) { 
      throw new RuntimeException(e); 
     } 
    } 
} 
+0

¡Funcionó de maravilla! Usé un servidor SMTP MS O365, me aseguré de que la dirección de envío fuera un alias o un usuario de correo electrónico en O365, y funcionó de inmediato. ¡Increíble! –