package org.cloudfoundry.identity.uaa.login; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.web.util.UriComponentsBuilder; import javax.mail.Address; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.io.UnsupportedEncodingException; public class EmailService implements MessageService { private final Log logger = LogFactory.getLog(getClass()); private final JavaMailSender mailSender; private final String loginUrl; private final String brand; public EmailService(JavaMailSender mailSender, String loginUrl, String brand) { this.mailSender = mailSender; this.loginUrl = loginUrl; this.brand = brand; } private Address[] getSenderAddresses() throws AddressException, UnsupportedEncodingException { String host = UriComponentsBuilder.fromHttpUrl(loginUrl).build().getHost(); String name = brand.equals("pivotal") ? "Pivotal" : "Cloud Foundry"; return new Address[]{new InternetAddress("admin@" + host, name)}; } @Override public void sendMessage(String userId, String email, MessageType messageType, String subject, String htmlContent) { MimeMessage message = mailSender.createMimeMessage(); try { message.addFrom(getSenderAddresses()); message.addRecipients(Message.RecipientType.TO, email); message.setSubject(subject); message.setContent(htmlContent, "text/html"); } catch (MessagingException e) { logger.error("Exception raised while sending message to " + email, e); } catch (UnsupportedEncodingException e) { logger.error("Exception raised while sending message to " + email, e); } mailSender.send(message); } }