title: how to send a mail to group of person by using Javamail
body: <p>Can anybody tell me how to send a mail to group of person by using JavaMail?</p>
  
  <p>I have tried but I am getting error at <code>SendEmailToGroupDemo()</code> and at <code>start()</code> method.</p>
  
  <pre><code>public class MailJava {
  
  public static void main(String[] args) {
  
        // Create a SendEmail object and call start 
        // method to send a mail in Java.
        SendEmailToGroupDemo sendEmailToGroup = new SendEmailToGroupDemo();
        sendEmailToGroup.start();
  
       }
  
       private void start() {
  
        // For establishment of email client with 
        // Google's gmail use below properties.
        // For TLS Connection use below properties
        // Create a Properties object 
        Properties props = new Properties();
  
        // these properties are required
        // providing smtp auth property to true
        props.put("mail.smtp.auth", "true");
        // providing tls enability
        props.put("mail.smtp.starttls.enable", "true");
        // providing the smtp host i.e gmail.com
        props.put("mail.smtp.host", "smtp.gmail.com");
        // providing smtp port as 587
        props.put("mail.smtp.port", "587");
  
        // For SSL Connection use below properties
  
        /*props.put("mail.smtp.host", "smtp.gmail.com");
         props.put("mail.smtp.socketFactory.port", "465");
         props.put("mail.smtp.socketFactory.class",
           "javax.net.ssl.SSLSocketFactory");
         props.put("mail.smtp.auth", "true");
         props.put("mail.smtp.port", "465");*/
  
        // Create Scanner object to take necessary 
        // values from the user.
        Scanner scanner = new Scanner(System.in);
  
        System.out.println("Please provide your Username for Authentication ...");
        final String Username = scanner.next();
  
        System.out.println("Please provide your Password for Authentication ...");
        final String Password = scanner.next();
  
        System.out.println("Please provide Email Address from which you want to send Email ...");
        final String fromEmailAddress = scanner.next();
  
        System.out.println("Please provide Email Addresses to which you want to send Email ...");
        System.out.println("If you are done type : Done or done");
  
        // ArrayLists to store email addresses entered by user
        ArrayList&lt; String&gt; emails = (ArrayList&lt; String &gt;) getEmails();
  
        System.out.println("Please provide Subject for your Email ... ");
        final String subject = scanner.next();
  
        System.out.println("Please provide Text Message for your Email ... ");
        final String textMessage = scanner.next();
  
        // Create a Session object based on the properties and 
        // Authenticator object
        Session session = Session.getDefaultInstance(props, 
          new LoginAuthenticator(Username,Password));
  
        try {
  
         // Create a Message object using the session created above
         Message message = new MimeMessage(session);
  
         // setting email address to Message from where message is being sent
         message.setFrom(new InternetAddress(fromEmailAddress));
  
         // setting the email addressess to which user wants to send message 
         message.setRecipients(Message.RecipientType.BCC, getEmailsList(emails));
  
         // setting the subject for the email 
         message.setSubject(subject);
  
         // setting the text message which user wants to send to recipients
         message.setText(textMessage);
  
         // Using the Transport class send() method to send message 
         Transport.send(message);
  
         System.out.println("\nYour Message delivered successfully ....");
  
        } catch (MessagingException e) {
  
         throw new RuntimeException(e);
  
        }  
       }
  
       // This method takes a list of email addresses and 
       // returns back an array of Address by looping the 
       // list one by one and storing it into Address[]
       private Address[] getEmailsList(ArrayList&lt; String &gt; emails) {
  
        Address[] emaiAddresses = new Address[emails.size()];
  
        for (int i =0;i &lt; emails.size();i++) {
         try {
          emaiAddresses[i] = new InternetAddress(emails.get(i));
         }
         catch (AddressException e) {
  
          e.printStackTrace();
         }
        }
        return emaiAddresses;
       }
  
       // This method prompts user for email group to which he
       // wants to send message
       public List&lt; String &gt; getEmails() {
        ArrayList&lt; String &gt; emails = new ArrayList&lt; String &gt;();
  
        int counter = 1;
        String address = "";
        Scanner scanner = new Scanner(System.in);
  
        // looping inifinitely times as long as user enters 
        // emails one by one
        // the while loop breaks when user types done and 
        // press enter.
        while(true) {
  
         System.out.println("Enter E-Mail : " + counter);
         address = scanner.next();
  
         if(address.equalsIgnoreCase("Done")){
          break;
         }
         else {
          emails.add(address);
          counter++;
         }
        }
  
        return emails;
       }
      }
  
      // Creating a class for Username and Password authentication
      // provided by the user.
      class LoginAuthenticator extends Authenticator {
       PasswordAuthentication authentication = null;
  
       public LoginAuthenticator(String username, String password) {
        authentication = new PasswordAuthentication(username,password);
       }
  
       @Override
       protected PasswordAuthentication getPasswordAuthentication() {
        return authentication;
       }
  }
  </code></pre>