Search code examples
javaemailweb-applicationssend

Java Simple Email Program in Eclipse


I want to make a simple program where you can send email from the Command Line. I found this tutorial, ' http://www.tutorialspoint.com/java/java_sending_email.htm ', however the downloads don't. So where can I get JavaMail API and Java Activation Framework (JAF) and how would i put it in my class path.

Basically Im looking for someone to break it down and show me how I could make an email program.

Im using Eclipse luna.


Solution

  • Do have a look at this example. This example, simply sends one attachment as a mail. The contents of attachment quiz.txt are as follows:

    What is the Capital of India?/New Delhi
    Where is the Taj Mahal?/Agra
    

    Here is the SendMailExample.java file:

    import java.util.*;
    import javax.activation.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.mail.Authenticator;
    import javax.mail.PasswordAuthentication;
    
    public class SendMailExample {
    
        private String from;
        private String to;
        private String subject;
        private String messageBody;
        private String fileName;
        private String host;
    
        private Properties properties;
    
        private MimeMessage message;
        private BodyPart messageBodyPart;
        private Multipart multipart;
    
        private Authenticator authenticator;
    
        public SendMailExample () {
            from = "[email protected]";
            to = "[email protected]";
            subject = "Subject Testing";
            messageBody = "<html><body><h1>HAVE FAITH, AND STAY" +
                        " CALM :-) I AM WITH YOU, OKAY :-)</h1></body></html>";
            fileName = "quiz.txt";
            host = "smtp.gmail.com";
    
            authenticator = new SMTPAuthenticator ();
            properties = System.getProperties ();
            properties.put ( "mail.smtp.host", host );
            properties.put ( "mail.smtp.starttls.enable", "true" );
            properties.put ( "mail.smtp.port", "587" );
            properties.put ( "mail.smtp.auth", "true" );
        }
    
        private void sendMail ( String from, String to,
                        String subject, String messageBody, String fileName ) {
            try {
                Session session = Session.getDefaultInstance ( properties, authenticator );
                message = new MimeMessage ( session );
                message.setFrom ( new InternetAddress ( from ) );
                message.addRecipient ( Message.RecipientType.TO,
                                    new InternetAddress ( to ) );
                message.setSubject ( subject );
    
                multipart = new MimeMultipart ();
                messageBodyPart = new MimeBodyPart ();
                messageBodyPart.setContent ( messageBody, "text/html" );
                multipart.addBodyPart ( messageBodyPart );
    
                messageBodyPart = new MimeBodyPart ();
                DataSource source = new FileDataSource ( fileName );
                messageBodyPart.setDataHandler ( new DataHandler ( source ) );
                messageBodyPart.setFileName ( fileName );
                multipart.addBodyPart ( messageBodyPart );
    
                message.setContent ( multipart );
    
                Transport.send ( message );
                System.out.println ( "Message send successfully...." );
            } catch ( Exception me ) {
                me.printStackTrace ();
            }
        } 
    
        private void performTask () {
            sendMail ( from, to, subject, messageBody, fileName );
        }
    
        public static void main ( String[] args ) {
            new SendMailExample ().performTask ();
        }
    }
    
    /**
      * SimpleAuthenticator is used to do simple authentication
      * when the SMTP server requires it.
      */
    
    class SMTPAuthenticator extends Authenticator {
    
        private static final String SMTP_AUTH_USER = "[email protected]";
        private static final String SMTP_AUTH_PASSWORD = "somepassword";
    
        public PasswordAuthentication getPasswordAuthentication () {
            String username = SMTP_AUTH_USER;
            String password = SMTP_AUTH_PASSWORD;
    
            return new PasswordAuthentication( username,  password );
        }
    }
    

    You simply needed this mail.jar file.

    To compile, simply write ( mail.jar is present at C:\install\java\mail\mail.jar` location ):

    javac -classpath .;C:\install\java\mail\mail.jar SendMailExample.java
    

    To run, write:

    java -classpath .;C:\install\java\mail\mail.jar SendMailExample

    THis will do :-)