A Comprehensive Guide to Sending Emails via Gmail, Yahoo, and Hotmail Using JavaMail API

Nov 23, 2025 · Programming · 10 views · 7.8

Keywords: Java | Email | JavaMail API | Gmail | SMTP

Abstract: This article provides a detailed guide on how to send emails from Java applications using the JavaMail API with popular email services like Gmail, Yahoo, and Hotmail. It includes complete code examples, configuration parameters, and exception handling tips for developers.

Introduction

Email functionality is a critical component in modern software development, used for notifications, verifications, and marketing. This article explains how to send emails from Java applications using the JavaMail API with services such as Gmail, Yahoo, and Hotmail.

Overview of JavaMail API

The JavaMail API is a standard extension for the Java platform that enables sending and receiving emails. It supports protocols like SMTP, POP3, and IMAP, allowing seamless integration into applications. To use it, download the necessary jar files and add them to your project's classpath.

Configuring Mail Server Parameters

Different email providers use specific SMTP servers and ports. Common configurations include:

These settings are applied via Java's Properties object to ensure proper connection to the mail server.

Complete Code Example

Below is a full Java code example for sending emails via Gmail. It demonstrates configuring SMTP parameters, creating a mail session, building the message, and sending it.

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class EmailSender {
    private static String USER_NAME = "your-username";
    private static String PASSWORD = "your-password";
    private static String RECIPIENT = "recipient@example.com";

    public static void main(String[] args) {
        String from = USER_NAME;
        String pass = PASSWORD;
        String[] to = { RECIPIENT };
        String subject = "Java Email Sending Example";
        String body = "Welcome to JavaMail!";
        sendFromGMail(from, pass, to, subject, body);
    }

    private static void sendFromGMail(String from, String pass, String[] to, String subject, String body) {
        Properties props = System.getProperties();
        String host = "smtp.gmail.com";
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.user", from);
        props.put("mail.smtp.password", pass);
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");

        Session session = Session.getDefaultInstance(props);
        MimeMessage message = new MimeMessage(session);

        try {
            message.setFrom(new InternetAddress(from));
            InternetAddress[] toAddress = new InternetAddress[to.length];
            for (int i = 0; i < to.length; i++) {
                toAddress[i] = new InternetAddress(to[i]);
            }
            for (int i = 0; i < toAddress.length; i++) {
                message.addRecipient(Message.RecipientType.TO, toAddress[i]);
            }
            message.setSubject(subject);
            message.setText(body);
            Transport transport = session.getTransport("smtp");
            transport.connect(host, from, pass);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            System.out.println("Email sent successfully!");
        } catch (AddressException e) {
            System.err.println("Address error: " + e.getMessage());
        } catch (MessagingException e) {
            System.err.println("Messaging error: " + e.getMessage());
        }
    }
}

Key Steps Explained

The code involves essential steps:

  1. Set Properties: Configure SMTP server host, port, TLS, and authentication.
  2. Create Session: Establish a mail session using the properties.
  3. Build MimeMessage: Set the from, to, subject, and body of the email.
  4. Send Email: Connect via Transport and send the message.

For Yahoo or Hotmail, modify the host variable and port accordingly.

Exception Handling and Best Practices

Exceptions like AddressException (invalid addresses) or MessagingException (sending failures) may occur. Handle them by logging details and considering retries or user alerts. Securely store passwords to avoid hard-coding sensitive data.

Extended Applications

Beyond plain text, JavaMail supports HTML emails, attachments, and multipart messages. For instance, use message.setContent("<p>Welcome to JavaMail</p>", "text/html") for HTML. Attachments can be added with MimeBodyPart and Multipart classes.

Conclusion

The JavaMail API simplifies email integration in Java applications, supporting Gmail, Yahoo, and Hotmail. This guide offers practical code and configurations to enhance application communication capabilities.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.