Sending mail from apache tomcat

I am working on a web project using Tomcat 6 as my web server and JSP as an interface. I want to send mail from a web server to an email account. How can I achieve this?

To get started, here is my form in 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> 
+6
source share
3 answers

Using the Java-Mail API.

  • Get the necessary data from the JSP,
  • Send it to Servlet
  • Call a service method to send mail from a servlet
  • Use the Java Mail API to send letters from a service method, a quick example
+13
source

This works fine (gmail example):

 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(" fromSomeone@gmail.com ")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(" toSomeone@gmail.com ")); 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); } } } 
+3
source

This is the easiest way using MailToURLConnection . No additional libraries are required.

 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(); } 
+1
source

Source: https://habr.com/ru/post/900544/


All Articles