DEV Community

Sabir Sheikh
Sabir Sheikh

Posted on

How to Send Email Using JSP and JavaMail API

Sending emails from a JSP page is very useful for contact forms, notifications, and automation in Java web applications. In this guide, youโ€™ll learn how to send a simple text email using JSP + JavaMail API, step by step.

โœ… Requirements
Before you begin, you need the following:

  1. JavaMail API Library Download from the official GitHub:

JavaMail (javax.mail.jar):
[https://repo1.maven.org/maven2/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2.jar]

  1. JavaBeans Activation Framework (activation.jar) Download:

activation.jar:
[https://repo1.maven.org/maven2/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2.jar]

๐Ÿ“ Place both JARs in your projectโ€™s WEB-INF/lib folder.

๐Ÿ“ Instructions to Use:
Download both .jar files.

Place them in your projectโ€™s WEB-INF/lib folder if using a Java web app.

Make sure your server (e.g., Apache Tomcat) loads them at runtime.

๐Ÿ“„ Step-by-Step Implementation in JSP
Hereโ€™s a complete working example of sending an email from a sendmail.jsp file.

<%@ page import="java.util.*, javax.mail.*, javax.mail.internet.*" %>
<%
    final String senderEmail = "your_email@gmail.com";
    final String senderPassword = "your_app_password"; // App Password, not Gmail password
    String recipient = "recipient@example.com";
    String subject = "Test Mail from JSP";
    String messageText = "This is a test email sent from JSP page.";

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

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

    try {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(senderEmail));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
        message.setSubject(subject);
        message.setText(messageText);
        Transport.send(message);

        out.println("<h3>Email sent successfully!</h3>");
    } catch (MessagingException e) {
        out.println("<h3>Error: " + e.getMessage() + "</h3>");
        e.printStackTrace(out);
    }
%>

Enter fullscreen mode Exit fullscreen mode

๐Ÿ” Gmail App Password Setup
Since Google doesn't allow you to use your Gmail password directly, follow these steps:

Turn on 2-Step Verification for your Google account.

Go to: [https://myaccount.google.com/apppasswords]

Generate a new App Password.

Use this password in place of your Gmail password in the JSP code.

๐Ÿ“Œ Tips
Never use real credentials in public code.

Always handle exceptions gracefully.

For real-world projects, separate business logic (email sending) into a Servlet or Java Bean instead of putting it directly in JSP.
๐Ÿงพ Summary
| Component | Description |
| -------------- | --------------------------------- |
| JSP Page | Sends email using JavaMail API |
| JavaMail Jar | javax.mail-1.6.2.jar |
| Activation Jar | activation-1.1.1.jar |
| SMTP Server | Gmail SMTP (smtp.gmail.com:587) |
| Authentication | Gmail App Password |

Top comments (0)