• Home
  • Ubuntu 18.04
    • Whats New?
    • Upgrade Ubuntu
    • Install Java
    • Install Node.js
    • Install Docker
    • Install Git
    • Install LAMP Stack
  • Tutorials
    • AWS
    • Shell Scripting
    • Docker
    • Git
    • MongoDB
  • Funny Tools
  • FeedBack
  • Submit Article
  • About Us
TecAdmin
Menu
  • Home
  • Ubuntu 18.04
    • Whats New?
    • Upgrade Ubuntu
    • Install Java
    • Install Node.js
    • Install Docker
    • Install Git
    • Install LAMP Stack
  • Tutorials
    • AWS
    • Shell Scripting
    • Docker
    • Git
    • MongoDB
  • Funny Tools
  • FeedBack
  • Submit Article
  • About Us

JavaMail API – Sending Email using Java from Gmail SMTP

Written by Rahul, Updated on May 24, 2014

JavaMail API supports the JavaMail (javax.mail) interface for sending email messages. It provides classes for sending email from remote smtp server with authentication like Gmail, sendgrid etc.

In this article we are using JavaMail API for sending emails using Java programming language through remote smtp server. This articles example are using Gmail smtp server as a remote smtp server for sending emails.

Step 1: Setup JavaMail Environment

First we need to download jar file containing all classes in javax.mail. Download jar (mail.jar) file from oracle official website.

Now set the classpath in system environment. Windows users make sure you have configured PATH variable for your Java installation.

Windows:

c:> set classpath=mail.jar;.;

Linux:

# export JAVA_HOME=/opt/jdk1.8.0_05/
# export PATH=$PATH:$JAVA_HOME/bin
# export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:mail.jar:.

Step 2: Write a Java Program to Send Email

Create a java file SendMail.java with the following content. In this script you need to change many setting as per your setup. This script can be used for sending email through TLS or SSL SMTP connection through Gmail smtp servers.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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;
import javax.mail.internet.AddressException;
 
public class SendMail {
 
public static void main(String[] args) throws Exception{
 
final String smtp_host = "smtp.gmail.com";
final String smtp_username = "myuser@gmail.com";
final String smtp_password = "_email_password_";
final String smtp_connection = "TLS";  // Use 'TLS' or 'SSL' connection
 
final String toEmail="recipient@example.com";
final String fromEmail="sender@example.com";
 
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
 
   if (smtp_connection.equals("TLS")) {
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", "587");
} else{
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.port", "465");
}
 
Session session = Session.getInstance(props,
  new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(smtp_username, smtp_password);
}
  });
 
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(fromEmail, "NoReply"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress(toEmail, "Mr. Recipient"));
msg.setSubject("Welcome To JavaMail API");
msg.setText("JavaMail API Test - Sending email example through remote smtp server");
Transport.send(msg);
System.out.println("Email sent successfully...");
} catch (AddressException e) {
throw new RuntimeException(e);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}

Step 3: Execute Program to Send Email

Finally we need to execute java program to send email. as we know that this happens in two steps, first to compile program and second to run it.

# javac SendMail.java
# java SendMail

Share it!
Share on Facebook
Share on Twitter
Share on LinkedIn
Share on Reddit
Share on Tumblr
Share on Whatsapp
Rahul
Rahul
Connect on Facebook Connect on Twitter

I, Rahul Kumar am the founder and chief editor of TecAdmin.net. I am a Red Hat Certified Engineer (RHCE) and working as an IT professional since 2009..

2 Comments

  1. Avatar Ivan Reply
    September 23, 2019 at 9:25 pm

    This post is great. I checked out your blog site pretty regularly, and you’re
    always coming up with some great staff. I shared this post on my
    Twitter, and my followers loved it! To the
    next. Cheers.

  2. Avatar Anshul Verma Reply
    October 23, 2015 at 6:12 pm

    sir getting this exception !!
    plz help
    run:
    Exception in thread “main” java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger
    at javax.mail.Session.initLogger(Session.java:227)
    at javax.mail.Session.(Session.java:212)
    at javax.mail.Session.getInstance(Session.java:248)
    at testing.SendMail.main(SendMail.java:41)
    Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    … 4 more
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)

Leave a Reply Cancel reply

Popular Posts

  • How To Install Python 3.9 on Ubuntu 20.04 5
  • How to Install Python 3.9 on CentOS/RHEL 7 & Fedora 32/31 0
  • How To Install VNC Server on Ubuntu 20.04 1
  • How To Install NVM on macOS with Homebrew 0
  • (Solved) apt-add-repository command not found – Ubuntu & Debian 0
© 2013-2020 Tecadmin.net. All Rights Reserved | Terms  | Privacy Policy