/** * Decide whether to use smtp or gmail * * @param mmd the MailMessageData */ public boolean sendMail(Mail mail) { boolean retVal = true; if (mailConfig.isGmail()) { retVal = gmailSend(mail); } else { retVal = smtpSend(mail); } return retVal; }
/** * Sent the message to a plain SMTP server like Waldo * * @param mmd the MailMessageData to send * @return success or failure */ private boolean smtpSend(Mail mail) { boolean retVal = true; Session session = null; try { // Create a properties object Properties smtpProps = new Properties(); // Add mail configuration to the properties smtpProps.put("mail.transport.protocol", "smtp"); smtpProps.put("mail.smtp.host", mailConfig.getUrlSmtp()); smtpProps.put("mail.smtp.port", mailConfig.getPortSmtp()); if (mailConfig.isSMTPAuth()) { Authenticator auth = new SMTPAuthenticator(); session = Session.getInstance(smtpProps, auth); } else session = Session.getDefaultInstance(smtpProps, null); // Display the conversation between the client and server if (DEBUG) session.setDebug(true); // Create a new message MimeMessage msg = new MimeMessage(session); // Set the single from field msg.setFrom(new InternetAddress(mailConfig.getUserEmail())); // Set the To, CC, and BCC from their ArrayLists for (String emailAddress : mail.getToRecipients()) msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailAddress, false)); if (mail.getCcRecipients() != null) for (String emailAddress : mail.getCcRecipients()) if (!emailAddress.equals("")) msg.addRecipient(Message.RecipientType.CC, new InternetAddress(emailAddress, false)); if (mail.getBccRecipients() != null) for (String emailAddress : mail.getBccRecipients()) if (!emailAddress.equals("")) msg.addRecipient(Message.RecipientType.BCC, new InternetAddress(emailAddress, false)); // Set the subject msg.setSubject(mail.getSubject()); // Set the message body msg.setText(mail.getContent()); // Set some other header information msg.setHeader("X-Mailer", "Comp Sci Tech Mailer"); msg.setSentDate(new Date()); if (mailConfig.isSMTPAuth()) { Transport transport = session.getTransport(); transport.connect(); transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO)); transport.close(); } else Transport.send(msg); } catch (NoSuchProviderException e) { e.printStackTrace(); JOptionPane.showMessageDialog( null, "There is no server at the SMTP address.", "SMTP-NoSuchProviderException", JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "There is no server at the SMTP address.", e); retVal = false; } catch (AddressException e) { e.printStackTrace(); JOptionPane.showMessageDialog( null, "There is an error in a recipient's address.", "SMTP-AddressException", JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "There is an error in a recipient's address.", e); retVal = false; } catch (MessagingException e) { e.printStackTrace(); JOptionPane.showMessageDialog( null, "There is a problem with the message.", "SMTP-MessagingException", JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "There is a problem with the message.", e); retVal = false; } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog( null, "There has been an unknown error.", "SMTP-UnknownException", JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "There has been an unknown error.", e); retVal = false; } return retVal; }
/** * Sent the message to a Gmail account * * @param mmd the MailMessageData to send * @return success or failure */ public boolean gmailSend(Mail mail) { boolean retVal = true; Transport transport = null; try { // Create a properties object Properties smtpProps = new Properties(); // Add mail configuration to the properties smtpProps.put("mail.transport.protocol", "smtps"); smtpProps.put("mail.smtps.host", mailConfig.getUrlSmtp()); smtpProps.put("mail.smtps.auth", "true"); smtpProps.put("mail.smtps.quitwait", "false"); // Create a mail session Session mailSession = Session.getDefaultInstance(smtpProps); // Display the conversation between the client and server if (DEBUG) mailSession.setDebug(true); // Instantiate the transport object transport = mailSession.getTransport(); // Create a new message MimeMessage msg = new MimeMessage(mailSession); // Set the To, CC, and BCC from their ArrayLists for (String emailAddress : mail.getToRecipients()) msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailAddress, false)); if (mail.getCcRecipients() != null) for (String emailAddress : mail.getCcRecipients()) msg.addRecipient(Message.RecipientType.CC, new InternetAddress(emailAddress, false)); if (mail.getBccRecipients() != null) for (String emailAddress : mail.getBccRecipients()) msg.addRecipient(Message.RecipientType.BCC, new InternetAddress(emailAddress, false)); // Set the subject line msg.setSubject(mail.getSubject()); // Set the message body msg.setText(mail.getContent()); // Set some other header information msg.setHeader("X-Mailer", "Comp Sci Tech Mailer"); msg.setSentDate(new Date()); // Connect and authenticate to the server transport.connect( mailConfig.getUrlSmtp(), mailConfig.getPortSmtp(), mailConfig.getUserNamePop3(), mailConfig.getUserPassPop3()); // Send the message transport.sendMessage(msg, msg.getAllRecipients()); // Close the connection transport.close(); } catch (NoSuchProviderException e) { e.printStackTrace(); JOptionPane.showMessageDialog( null, "There is no server at the SMTP address.", "Gmail-NoSuchProviderException", JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "There is no server at the SMTP address.", e); retVal = false; } catch (AddressException e) { e.printStackTrace(); JOptionPane.showMessageDialog( null, "There is an error in a recipient's address.", "Gmail-AddressException", JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "There is an error in a recipient's address.", e); retVal = false; } catch (MessagingException e) { e.printStackTrace(); JOptionPane.showMessageDialog( null, "There is a problem with the message.", "Gmail-MessagingException", JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "There is a problem with the message.", e); retVal = false; } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog( null, "There has been an unknown error.", "Gmail-UnknownException", JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "There has been an unknown error.", e); retVal = false; } return retVal; }