Javamail gmail setup
Here's a step-by-step guide to setting up JavaMail to send emails using Gmail:
Prerequisites:
- JavaMail API (jar file) - download from here
- Gmail account with 2-Step Verification enabled (recommended)
- Java development environment (e.g., Eclipse, IntelliJ IDEA, NetBeans)
Step 1: Add JavaMail API to your project
-
Download the JavaMail API jar file and add it to your project's classpath.
-
If you're using Maven, add the following dependency to your
pom.xml
file:<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency>
Step 2: Create a Gmail account with 2-Step Verification
-
Create a new Gmail account or use an existing one.
-
Enable 2-Step Verification to add an extra layer of security.
-
Note down the App Password (16-character code) generated by Google.
Step 3: Set up JavaMail properties
- Create a
Properties
object to store the JavaMail settings:Properties props = new Properties(); props.put("mail.store.protocol", "imaps"); props.put("mail.transport.protocol", "smtp"); 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");
- Set the
mail.smtp.auth
property totrue
to enable authentication. - Set the
mail.smtp.starttls.enable
property totrue
to enable TLS encryption. - Set the
mail.smtp.host
property tosmtp.gmail.com
and themail.smtp.port
property to587
for Gmail's SMTP server.
Step 4: Create a Gmail session
- Create a
Session
object using theProperties
object:Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-gmail-username", "your-app-password"); } });
- Replace
your-gmail-username
with your Gmail username andyour-app-password
with the App Password generated by Google.
Step 5: Send an email
- Create a
Message
object and set the sender, recipient, subject, and body:Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]")); message.setSubject("Test email from JavaMail"); message.setText("This is a test email sent using JavaMail.");
- Send the email using the
Transport
object:Transport.send(message);
Example code:
Here's the complete example code:
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class JavaMailExample {
public static void main(String[] args) {
Properties props = new Properties();
props.put("mail.store.protocol", "imaps");
props.put("mail.transport.protocol", "smtp");
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("your-gmail-username", "your-app-password");
}
});
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
message.setSubject("Test email from JavaMail");
message.setText("This is a test email sent using JavaMail.");
Transport.send(message);
}
}
Replace your-gmail-username
and your-app-password
with your actual Gmail credentials.