/** * Send email. * * @param eMsg the e msg * @return true, if successful */ public boolean sendEmail(EmailMessage eMsg) { SendEmailRequest request = new SendEmailRequest().withSource(eMsg.getFromAddress()); Destination dest = new Destination().withToAddresses(eMsg.getToAddresses()); dest.setCcAddresses(eMsg.getToCcAddresses()); request.setDestination(dest); Content subjContent = new Content().withData(eMsg.getSubject()); Message msg = new Message().withSubject(subjContent); Content textContent = new Content().withData(eMsg.getTxtMessage()); Body body = new Body().withText(textContent); if (eMsg.getHtmlMessage() != null) { Content htmlContent = new Content().withData(eMsg.getHtmlMessage()); body.setHtml(htmlContent); } msg.setBody(body); request.setMessage(msg); try { emailClient.sendEmail(request); logger.debug(msg); } catch (AmazonClientException e) { logger.error(e.getMessage()); return false; } return true; }
public void send() throws IOException, TemplateException { client = createClient(); Destination destination = new Destination().withToAddresses(new String[]{email}); Content subject = new Content().withData(SUBJECT); String bodyContent = createBody(); Content textContent = new Content().withData(bodyContent); Body body = new Body().withText(textContent); Message message = new Message() .withSubject(subject) .withBody(body); SendEmailRequest request = new SendEmailRequest() .withSource(getSender()) .withDestination(destination) .withMessage(message); client.sendEmail(request); }
public void sendEmails(List<String> emailAddresses, String from, String subject, String emailBody) { Message message = new Message() .withSubject(new Content().withData(subject)) .withBody(new Body().withText(new Content().withData(emailBody))); getChunkedEmailList(emailAddresses) .forEach(group -> client.sendEmail(new SendEmailRequest() .withSource(from) .withDestination(new Destination().withBccAddresses(group)) .withMessage(message)) ); shutdown(); }
/** * {@inheritDoc} */ @Override public EmailResponse sendEmail(EmailRequest emailRequest) { try { SendEmailResult result = this.asyncSES.sendEmail(new SendEmailRequest() .withSource(this.emailConfig.from()) .withDestination(new Destination() .withToAddresses(emailRequest.getRecipientToList()) .withCcAddresses(emailRequest.getRecipientCcList()) .withBccAddresses(emailRequest.getRecipientBccList())) .withMessage(new Message() .withSubject(new Content().withData(emailRequest.getSubject())) .withBody(new Body().withHtml(new Content().withData(emailRequest.getBody()))))); return new EmailResponse(result.getMessageId(), result.getSdkHttpMetadata().getHttpStatusCode(), result.getSdkHttpMetadata().getHttpHeaders()); } catch (Exception ex) { LOGGER.error("Exception while sending email!!", ex); throw new AwsException(ex.getMessage(), ex); } }
/** * {@inheritDoc} */ @Override public void sendEmailAsync(EmailRequest emailRequest) { try { // Shall we use the Future object returned by async call? this.asyncSES.sendEmailAsync(new SendEmailRequest() .withSource(this.emailConfig.from()) .withDestination(new Destination() .withToAddresses(emailRequest.getRecipientToList()) .withCcAddresses(emailRequest.getRecipientCcList()) .withBccAddresses(emailRequest.getRecipientBccList())) .withMessage(new Message() .withSubject(new Content().withData(emailRequest.getSubject())) .withBody(new Body().withHtml(new Content().withData(emailRequest.getBody())))), this.asyncHandler); } catch (Exception ex) { LOGGER.error("Exception while sending email asynchronously!!", ex); } }
protected Void doInBackground(String...messages) { if( messages.length == 0 ) return null; // build the message and destination objects Content subject = new Content( "OpenCaption" ); Body body = new Body( new Content( messages[0] ) ); Message message = new Message( subject, body ); Destination destination = new Destination().withToAddresses( toAddress ); // send out the email SendEmailRequest request = new SendEmailRequest( fromVerifiedAddress, destination, message ); // END:asynctask SendEmailResult result = // START:asynctask sesClient.sendEmail( request ); // END:asynctask Log.d( "glass.opencaption", "AWS SES resp message id:" + result.getMessageId() ); // START:asynctask return null; }
@Override public boolean sendEmail(List<String> emails, String subject, String body) { if (emails != null && !emails.isEmpty() && !StringUtils.isBlank(body)) { final SendEmailRequest request = new SendEmailRequest().withSource(Config.SUPPORT_EMAIL); Destination dest = new Destination().withToAddresses(emails); request.setDestination(dest); Content subjContent = new Content().withData(subject); Message msg = new Message().withSubject(subjContent); // Include a body in both text and HTML formats Content textContent = new Content().withData(body).withCharset(Config.DEFAULT_ENCODING); msg.setBody(new Body().withHtml(textContent)); request.setMessage(msg); Para.asyncExecute(new Runnable() { public void run() { sesclient.sendEmail(request); } }); return true; } return false; }
private SendEmailRequest prepareMessage(SimpleMailMessage simpleMailMessage) { Destination destination = new Destination(); destination.withToAddresses(simpleMailMessage.getTo()); if (simpleMailMessage.getCc() != null) { destination.withCcAddresses(simpleMailMessage.getCc()); } if (simpleMailMessage.getBcc() != null) { destination.withBccAddresses(simpleMailMessage.getBcc()); } Content subject = new Content(simpleMailMessage.getSubject()); Body body = new Body(new Content(simpleMailMessage.getText())); SendEmailRequest emailRequest = new SendEmailRequest(simpleMailMessage.getFrom(), destination, new Message(subject, body)); if (StringUtils.hasText(simpleMailMessage.getReplyTo())) { emailRequest.withReplyToAddresses(simpleMailMessage.getReplyTo()); } return emailRequest; }
@Test public void testSendSimpleMailWithMinimalProperties() throws Exception { AmazonSimpleEmailService emailService = mock(AmazonSimpleEmailService.class); SimpleEmailServiceMailSender mailSender = new SimpleEmailServiceMailSender(emailService); SimpleMailMessage simpleMailMessage = createSimpleMailMessage(); ArgumentCaptor<SendEmailRequest> request = ArgumentCaptor.forClass(SendEmailRequest.class); when(emailService.sendEmail(request.capture())).thenReturn(new SendEmailResult().withMessageId("123")); mailSender.send(simpleMailMessage); SendEmailRequest sendEmailRequest = request.getValue(); assertEquals(simpleMailMessage.getFrom(), sendEmailRequest.getSource()); assertEquals(simpleMailMessage.getTo()[0], sendEmailRequest.getDestination().getToAddresses().get(0)); assertEquals(simpleMailMessage.getSubject(), sendEmailRequest.getMessage().getSubject().getData()); assertEquals(simpleMailMessage.getText(), sendEmailRequest.getMessage().getBody().getText().getData()); assertEquals(0, sendEmailRequest.getDestination().getCcAddresses().size()); assertEquals(0, sendEmailRequest.getDestination().getBccAddresses().size()); }
@Override default void onSuccess(SendEmailRequest request, SendEmailResult result) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Email sent to: {}", request.getDestination().getToAddresses()); LOGGER.debug("SES SendEmailResult messageId: [{}]", result.getMessageId()); } }
private SendEmailRequest createMailRequest(Exchange exchange) { SendEmailRequest request = new SendEmailRequest(); request.setSource(determineFrom(exchange)); request.setDestination(determineTo(exchange)); request.setReturnPath(determineReturnPath(exchange)); request.setReplyToAddresses(determineReplyToAddresses(exchange)); request.setMessage(createMessage(exchange)); return request; }
@Override public SendEmailResult sendEmail(SendEmailRequest sendEmailRequest) throws AmazonServiceException, AmazonClientException { this.sendEmailRequest = sendEmailRequest; SendEmailResult result = new SendEmailResult(); result.setMessageId("1"); return result; }
public static void emailVerification(String name, String email, UUID uuid, String username, String responseServletUrl, ServletConfig config) throws EmailUtilException { String fromEmail = config.getServletContext().getInitParameter("return_email"); if (fromEmail == null || fromEmail.isEmpty()) { logger.error("Missing return_email parameter in the web.xml file"); throw(new EmailUtilException("The from email for the email facility has not been set. Pleaese contact the OpenChain team with this error.")); } String link = responseServletUrl + "?request=register&username=" + username + "&uuid=" + uuid.toString(); StringBuilder msg = new StringBuilder("<div>Welcome "); msg.append(name); msg.append(" to the OpenChain Certification website.<br /> <br />To complete your registration, click on the following or copy/paste into your web browser <a href=\""); msg.append(link); msg.append("\">"); msg.append(link); msg.append("</a><br/><br/>Thanks,<br/>The OpenChain team</div>"); Destination destination = new Destination().withToAddresses(new String[]{email}); Content subject = new Content().withData("OpenChain Registration [do not reply]"); Content bodyData = new Content().withData(msg.toString()); Body body = new Body(); body.setHtml(bodyData); Message message = new Message().withSubject(subject).withBody(body); SendEmailRequest request = new SendEmailRequest().withSource(fromEmail).withDestination(destination).withMessage(message); try { AmazonSimpleEmailServiceClient client = getEmailClient(config); client.sendEmail(request); logger.info("Invitation email sent to "+email); } catch (Exception ex) { logger.error("Email send failed",ex); throw(new EmailUtilException("Exception occured during the emailing of the invitation",ex)); } }
public static void emailUser(String toEmail, String subjectText, String msg, ServletConfig config) throws EmailUtilException { String fromEmail = config.getServletContext().getInitParameter("return_email"); if (fromEmail == null || fromEmail.isEmpty()) { logger.error("Missing return_email parameter in the web.xml file"); throw(new EmailUtilException("The from email for the email facility has not been set. Pleaese contact the OpenChain team with this error.")); } if (toEmail == null || toEmail.isEmpty()) { logger.error("Missing notification_email parameter in the web.xml file"); throw(new EmailUtilException("The to email for the email facility has not been set. Pleaese contact the OpenChain team with this error.")); } Destination destination = new Destination().withToAddresses(new String[]{toEmail}); Content subject = new Content().withData(subjectText); Content bodyData = new Content().withData(msg.toString()); Body body = new Body(); body.setHtml(bodyData); Message message = new Message().withSubject(subject).withBody(body); SendEmailRequest request = new SendEmailRequest().withSource(fromEmail).withDestination(destination).withMessage(message); try { AmazonSimpleEmailServiceClient client = getEmailClient(config); client.sendEmail(request); logger.info("User email sent to "+toEmail+": "+msg); } catch (Exception ex) { logger.error("Email send failed",ex); throw(new EmailUtilException("Exception occured during the emailing of a user email",ex)); } }
public static void emailAdmin(String subjectText, String msg, ServletConfig config) throws EmailUtilException { String fromEmail = config.getServletContext().getInitParameter("return_email"); if (fromEmail == null || fromEmail.isEmpty()) { logger.error("Missing return_email parameter in the web.xml file"); throw(new EmailUtilException("The from email for the email facility has not been set. Pleaese contact the OpenChain team with this error.")); } String toEmail = config.getServletContext().getInitParameter("notification_email"); if (toEmail == null || toEmail.isEmpty()) { logger.error("Missing notification_email parameter in the web.xml file"); throw(new EmailUtilException("The to email for the email facility has not been set. Pleaese contact the OpenChain team with this error.")); } Destination destination = new Destination().withToAddresses(new String[]{toEmail}); Content subject = new Content().withData(subjectText); Content bodyData = new Content().withData(msg.toString()); Body body = new Body(); body.setHtml(bodyData); Message message = new Message().withSubject(subject).withBody(body); SendEmailRequest request = new SendEmailRequest().withSource(fromEmail).withDestination(destination).withMessage(message); try { AmazonSimpleEmailServiceClient client = getEmailClient(config); client.sendEmail(request); logger.info("Admin email sent to "+toEmail+": "+msg); } catch (Exception ex) { logger.error("Email send failed",ex); throw(new EmailUtilException("Exception occured during the emailing of the submission notification",ex)); } }
/** * Email to notify a user that their profiles was updated * @param username * @param email * @param config * @throws EmailUtilException */ public static void emailProfileUpdate(String username, String email, ServletConfig config) throws EmailUtilException { String fromEmail = config.getServletContext().getInitParameter("return_email"); if (fromEmail == null || fromEmail.isEmpty()) { logger.error("Missing return_email parameter in the web.xml file"); throw(new EmailUtilException("The from email for the email facility has not been set. Pleaese contact the OpenChain team with this error.")); } StringBuilder msg = new StringBuilder("<div>The profile for username "); msg.append(username); msg.append(" has been updated. If you this update has been made in error, please contact the OpenChain certification team."); Destination destination = new Destination().withToAddresses(new String[]{email}); Content subject = new Content().withData("OpenChain Certification profile updated [do not reply]"); Content bodyData = new Content().withData(msg.toString()); Body body = new Body(); body.setHtml(bodyData); Message message = new Message().withSubject(subject).withBody(body); SendEmailRequest request = new SendEmailRequest().withSource(fromEmail).withDestination(destination).withMessage(message); try { AmazonSimpleEmailServiceClient client = getEmailClient(config); client.sendEmail(request); logger.info("Notification email sent for "+email); } catch (Exception ex) { logger.error("Email send failed",ex); throw(new EmailUtilException("Exception occured during the emailing of the submission notification",ex)); } }
public static void emailPasswordReset(String name, String email, UUID uuid, String username, String responseServletUrl, ServletConfig config) throws EmailUtilException { String fromEmail = config.getServletContext().getInitParameter("return_email"); if (fromEmail == null || fromEmail.isEmpty()) { logger.error("Missing return_email parameter in the web.xml file"); throw(new EmailUtilException("The from email for the email facility has not been set. Pleaese contact the OpenChain team with this error.")); } String link = responseServletUrl + "?request=pwreset&username=" + username + "&uuid=" + uuid.toString(); StringBuilder msg = new StringBuilder("<div>To reset the your password, click on the following or copy/paste into your web browser <a href=\""); msg.append(link); msg.append("\">"); msg.append(link); msg.append("</a><br/><br/><br/>The OpenChain team</div>"); Destination destination = new Destination().withToAddresses(new String[]{email}); Content subject = new Content().withData("OpenChain Password Reset [do not reply]"); Content bodyData = new Content().withData(msg.toString()); Body body = new Body(); body.setHtml(bodyData); Message message = new Message().withSubject(subject).withBody(body); SendEmailRequest request = new SendEmailRequest().withSource(fromEmail).withDestination(destination).withMessage(message); try { AmazonSimpleEmailServiceClient client = getEmailClient(config); client.sendEmail(request); logger.info("Reset password email sent to "+email); } catch (Exception ex) { logger.error("Email send failed",ex); throw(new EmailUtilException("Exception occured during the emailing of the password reset",ex)); } }
@Test public void testSendMultipleMails() throws Exception { AmazonSimpleEmailService emailService = mock(AmazonSimpleEmailService.class); SimpleEmailServiceMailSender mailSender = new SimpleEmailServiceMailSender(emailService); ArgumentCaptor<SendEmailRequest> request = ArgumentCaptor.forClass(SendEmailRequest.class); when(emailService.sendEmail(request.capture())).thenReturn(new SendEmailResult().withMessageId("123")); mailSender.send(createSimpleMailMessage(), createSimpleMailMessage()); verify(emailService, times(2)).sendEmail(ArgumentMatchers.any(SendEmailRequest.class)); }
/** * Method to send a text email. * @param m email message to be sent. * @return id of message that has been sent. * @throws MailNotSentException if mail couldn't be sent. */ private String sendTextEmail(AWSTextEmailMessage m) throws MailNotSentException { String messageId; long currentTimestamp = System.currentTimeMillis(); prepareClient(); if (!mEnabled) { //don't send message if not enabled return null; } try { synchronized (this) { //prevents throttling checkQuota(currentTimestamp); Destination destination = new Destination(m.getTo()); if (m.getBCC() != null && !m.getBCC().isEmpty()) { destination.setBccAddresses(m.getBCC()); } if (m.getCC() != null && !m.getCC().isEmpty()) { destination.setCcAddresses(m.getCC()); } //if no subject, set to empty string to avoid errors if (m.getSubject() == null) { m.setSubject(""); } Message message = new Message(); m.buildContent(message); SendEmailResult result = mClient.sendEmail(new SendEmailRequest(mMailFromAddress, destination, message)); messageId = result.getMessageId(); //update timestamp of last sent email mLastSentMailTimestamp = System.currentTimeMillis(); //wait to avoid throwttling exceptions to avoid making any //further requests this.wait(mWaitIntervalMillis); } } catch (Throwable t) { throw new MailNotSentException(t); } return messageId; }
private String getBody(SendEmailRequest sendEmailRequest) { return sendEmailRequest.getMessage().getBody().getText().getData(); }
private String getSubject(SendEmailRequest sendEmailRequest) { return sendEmailRequest.getMessage().getSubject().getData(); }
private List<String> getTo(SendEmailRequest sendEmailRequest) { return sendEmailRequest.getDestination().getToAddresses(); }
public SendEmailRequest getSendEmailRequest() { return sendEmailRequest; }
@Override public CompletableFuture<Boolean> send(Mail mailMessage) throws MailException { Message message = new Message(); message.setSubject(new Content(mailMessage.getSubject()).withCharset(Charsets.UTF_8.toString())); message.setBody(new Body(new Content(mailMessage.getText()).withCharset(Charsets.UTF_8.toString()))); Destination destination = new Destination(asList(mailMessage.getTo())); Optional.ofNullable(mailMessage.getCc()) .filter(cc -> cc.length > 0) .ifPresent(cc -> destination.setCcAddresses(asList(cc))); Optional.ofNullable(mailMessage.getBcc()) .filter(cc -> cc.length > 0) .ifPresent(cc -> destination.setBccAddresses(asList(cc))); SendEmailRequest sendEmailRequest = new SendEmailRequest(composeSource(mailMessage).toString(), destination, message); Optional.ofNullable(mailMessage.getReplyTo()) .ifPresent(r -> sendEmailRequest.setReplyToAddresses(asList(r))); return CompletableFuture.supplyAsync(() -> { double totalWait = rateLimiter.acquire(); if (totalWait > 5) { logger.warn("rate limit wait too long: " + totalWait + " seconds"); } SendEmailResult emailResult = client.sendEmail(sendEmailRequest); if (logger.isDebugEnabled()) { logger.debug("sent mail messageId:{}, body:\n{}", emailResult.getMessageId(), mailMessage); } else { logger.info("sent mail to {}, messageId:{}", destination, emailResult.getMessageId()); } return true; }, executor).handle((result, e) -> { if (e != null) { logger.warn("fail send mail to " + destination + ", error:" + e.getMessage()); return false; } return true; }); }