Search code examples
javajakarta-mail

JavaMail - Sending multiple emails in a loop


I have been tasked with writing an application that will send an email to 1-3 recipients, with 5 possible Survey questions. The questions and recipients are pulled from a Properties file, and the number of emails to send are also held in this file.

My issue is, I cannot get the emails to send with this current code, any suggestions?

EmailSend

for(int j=0; j<noOfEmails; j++)
            {
                if(noOfEmails==1)
                {
                    for(int i=0; i<noOfQuest; i++)
                    {
                        message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient1));
                        if(noOfQuest==1)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0]);
                        }
                        if(noOfQuest==2)
                        {
                            message.setText("Username: " + fName + " "+ sName +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1]);
                        }
                        if(noOfQuest==3)
                        {
                            message.setText("Username: " + fName + " "+ sName +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2]);
                        }
                        if(noOfQuest==4)
                        {
                            message.setText("Username: " + fName + sName +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2] + "\n" +
                                                            "Response 4: " + answers[3]);
                        }
                        if(noOfQuest==5)
                        {
                            message.setText("Username: " + fName + " "+ sName +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2] + "\n" +
                                                            "Response 4: " + answers[3] + "\n" +
                                                                "Response 4: " + answers[4]);
                        }

                        Transport.send(message);
                    }
                    if(noOfEmails==2)
                    {
                        for(int i=0; i<noOfQuest; i++)
                        {
                            message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient2));
                            if(noOfQuest==1)
                            {
                                message.setText("Username: " + fName + " "+ sName + "\n" +
                                                    "Response 1: " + answers[0]);
                            }
                            if(noOfQuest==2)
                            {
                                message.setText("Username: " + fName + " "+ sName +
                                                    "Response 1: " + answers[0] + "\n" +
                                                        "Response 2: " + answers[1]);
                            }
                            if(noOfQuest==3)
                            {
                                message.setText("Username: " + fName + " "+ sName +
                                                    "Response 1: " + answers[0] + "\n" +
                                                        "Response 2: " + answers[1] + "\n" +
                                                            "Response 3: " + answers[2]);
                            }
                            if(noOfQuest==4)
                            {
                                message.setText("Username: " + fName + sName +
                                                    "Response 1: " + answers[0] + "\n" +
                                                        "Response 2: " + answers[1] + "\n" +
                                                            "Response 3: " + answers[2] + "\n" +
                                                                "Response 4: " + answers[3]);
                            }
                            if(noOfQuest==5)
                            {
                                message.setText("Username: " + fName + " "+ sName +
                                                    "Response 1: " + answers[0] + "\n" +
                                                        "Response 2: " + answers[1] + "\n" +
                                                            "Response 3: " + answers[2] + "\n" +
                                                                "Response 4: " + answers[3] + "\n" +
                                                                    "Response 4: " + answers[4]);
                            }

                            Transport.send(message);
                        }
                    }
                    if(noOfQuest==3)
                    {
                        for(int i=0; i<noOfQuest; i++)
                        {
                            message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient3));
                            if(noOfQuest==1)
                            {
                                message.setText("Username: " + fName + " "+ sName + "\n" +
                                                    "Response 1: " + answers[0]);
                            }
                            if(noOfQuest==2)
                            {
                                message.setText("Username: " + fName + " "+ sName +
                                                    "Response 1: " + answers[0] + "\n" +
                                                        "Response 2: " + answers[1]);
                            }
                            if(noOfQuest==3)
                            {
                                message.setText("Username: " + fName + " "+ sName +
                                                    "Response 1: " + answers[0] + "\n" +
                                                        "Response 2: " + answers[1] + "\n" +
                                                            "Response 3: " + answers[2]);
                            }
                            if(noOfQuest==4)
                            {
                                message.setText("Username: " + fName + sName +
                                                    "Response 1: " + answers[0] + "\n" +
                                                        "Response 2: " + answers[1] + "\n" +
                                                            "Response 3: " + answers[2] + "\n" +
                                                                "Response 4: " + answers[3]);
                            }
                            if(noOfQuest==5)
                            {
                                message.setText("Username: " + fName + " "+ sName +
                                                    "Response 1: " + answers[0] + "\n" +
                                                        "Response 2: " + answers[1] + "\n" +
                                                            "Response 3: " + answers[2] + "\n" +
                                                                "Response 4: " + answers[3] + "\n" +
                                                                    "Response 4: " + answers[4]);
                            }
                            Transport.send(message);
                        }
                    }
                }
            }

Solution

  • After a little experimentation, I noticed that 2 of the 3 if statements were nested in the first, causing a fallthrough.

    Here is the working code:

    **for loop to check a configuration file, using a read **

    for(int i=0; i<noOfEmails; i++)
            {
                if(noOfEmails==1)
                {
                    for(int j=0; j<noOfQuest; j++)
                    {
                        System.out.println("In Loop[" + j + "] : recipient1: "+ recipient1);
    
    
                        if(i==0)
                        {
                            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient1));                            
                        }
                        if(noOfQuest==1)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0]);                           
                        }
                        if(noOfQuest==2)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1]);                           
                        }
                        if(noOfQuest==3)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2]);                           
                        }
                        if(noOfQuest==4)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2] + "\n" +
                                                            "Response 4: " + answers[3]);                           
                        }
                        if(noOfQuest==5)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2] + "\n" +
                                                            "Response 4: " + answers[3] + "\n" +
                                                                "Response 4: " + answers[4]);
                        }
                    }
                }   
    
                if(noOfEmails==2)
                {
                    for(int k=0; k<noOfQuest; k++)
                    {
                        System.out.println("In Loop[" + k + "] : recipient2: "+ recipient2);
    
                        if(i==0)
                        {
                            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient1));
                        }
                        if(i==1)
                        {
                            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient2));
                        }
                        if(noOfQuest==1)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0]);                               
                        }
                        if(noOfQuest==2)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1]);                               
                        }
                        if(noOfQuest==3)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2]);                               
                        }
                        if(noOfQuest==4)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2] + "\n" +
                                                            "Response 4: " + answers[3]);                               
                        }
                        if(noOfQuest==5)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2] + "\n" +
                                                            "Response 4: " + answers[3] + "\n" +
                                                                "Response 4: " + answers[4]);                               
                        }
                    }
                }
    
                if(noOfEmails==3)
                {
                    if(i==0)
                    {
                        message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient1));
                        System.out.println(recipient1);
                    }
                    if(i==1)
                    {
                        message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient2));
                        System.out.println(recipient2);
                    }
                    if(i==2)
                    {
                        message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient3));
                        System.out.println(recipient3);
                    }
    
                    for(int l=0; l<noOfQuest; l++)
                    {
                        System.out.println("In Loop[" + l + "] : recipient3: "+ recipient3);
    
    
                        if(noOfQuest==1)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0]);                               
                        }
                        if(noOfQuest==2)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1]);                               
                        }
                        if(noOfQuest==3)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2]);                               
                        }
                        if(noOfQuest==4)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2] + "\n" +
                                                            "Response 4: " + answers[3]);                               
                        }
                        if(noOfQuest==5)
                        {
                            message.setText("Username: " + fName + " "+ sName + "\n" +
                                                "Response 1: " + answers[0] + "\n" +
                                                    "Response 2: " + answers[1] + "\n" +
                                                        "Response 3: " + answers[2] + "\n" +
                                                            "Response 4: " + answers[3] + "\n" +
                                                                "Response 4: " + answers[4]);
                        }
                    }
                }
                Transport.send(message);
                System.out.println("Sent: " + message);
            }
    

    For anyone that is confused, "noOfEmails | noOfQuest" are 2 variables that are read from a properties file.