Here is an updated, cleaned version with registration and production verification.
public void sendEmail(String to, String subject, String body, String attachment, String mimeType, String fileName) { if (to == null) return; String environment = System.getProperty("ENVIRONMENT", System.getenv("ENVIRONMENT")); String logMessage; if (environment != null && environment.equals("production")) { logMessage = "Sent email to " + to + "."; } else { to = " success@simulator.amazonses.com "; logMessage = "Email sent to success@simulator.amazonses.com because $ENVIRONMENT != 'production'"; } // https://docs.aws.amazon.com/ses/latest/DeveloperGuide/examples-send-raw-using-sdk.html Session session = Session.getDefaultInstance(new Properties()); MimeMessage message = new MimeMessage(session); try { message.setSubject(subject, "UTF-8"); message.setFrom(new InternetAddress(FROM)); message.setRecipients(javax.mail.Message.RecipientType.TO, InternetAddress.parse(to)); MimeMultipart msg = new MimeMultipart("mixed"); MimeBodyPart wrap = new MimeBodyPart(); MimeMultipart msgBody = new MimeMultipart("alternative"); MimeBodyPart textPart = new MimeBodyPart(); MimeBodyPart htmlPart = new MimeBodyPart(); textPart.setContent(body, "text/plain; charset=UTF-8"); htmlPart.setContent(body,"text/html; charset=UTF-8"); msgBody.addBodyPart(textPart); msgBody.addBodyPart(htmlPart); wrap.setContent(msgBody); msg.addBodyPart(wrap); MimeBodyPart att = new MimeBodyPart(); att.setDataHandler(new DataHandler(attachment, mimeType)); att.setFileName(fileName); // DataSource fds = new FileDataSource(attachment); // att.setDataHandler(new DataHandler(fds)); // att.setFileName(fds.getName()); msg.addBodyPart(att); message.setContent(msg); AmazonSimpleEmailService client = AmazonSimpleEmailServiceClientBuilder .standard().withRegion(Regions.US_EAST_1).build(); message.writeTo(System.out); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); message.writeTo(outputStream); RawMessage rawMessage = new RawMessage(ByteBuffer.wrap(outputStream.toByteArray())); SendRawEmailRequest rawEmailRequest = new SendRawEmailRequest(rawMessage); // .withConfigurationSetName(CONFIGURATION_SET); client.sendRawEmail(rawEmailRequest); Logger.info(this.getClass(), "sendEmail()", logMessage); } catch (Exception ex) { Logger.info(this.getClass(), "sendEmail()", "The email was not sent. Error: " + ex.getMessage()); } }
Chloe
source share