I am working on a web project using Tomcat 6 as my webserver and JSP as frontend. I want to send a mail from the web server to an email account. How can I achieve this?
To start, 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"> <input type="reset" name="cancel" value="RESET"/></td>
</tr>
</table>
</form>
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);
}
}
}
This is simplest way, using MailToURLConnection.
No additional libraries needed.
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();
}