keycloak-service
公開メンバ関数 | 限定公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.email.DefaultEmailSenderProvider クラス
org.keycloak.email.DefaultEmailSenderProvider の継承関係図
Inheritance graph
org.keycloak.email.DefaultEmailSenderProvider 連携図
Collaboration graph

公開メンバ関数

 DefaultEmailSenderProvider (KeycloakSession session)
 
void send (Map< String, String > config, UserModel user, String subject, String textBody, String htmlBody) throws EmailException
 
void close ()
 

限定公開メンバ関数

InternetAddress toInternetAddress (String email, String displayName) throws UnsupportedEncodingException, AddressException, EmailException
 
String retrieveEmailAddress (UserModel user)
 

非公開メンバ関数

void setupTruststore (Properties props) throws NoSuchAlgorithmException, KeyManagementException
 

非公開変数類

final KeycloakSession session
 

静的非公開変数類

static final Logger logger = Logger.getLogger(DefaultEmailSenderProvider.class)
 

詳解

著者
Stian Thorgersen

構築子と解体子

◆ DefaultEmailSenderProvider()

org.keycloak.email.DefaultEmailSenderProvider.DefaultEmailSenderProvider ( KeycloakSession  session)
inline
54  {
55  this.session = session;
56  }
final KeycloakSession session
Definition: DefaultEmailSenderProvider.java:52

関数詳解

◆ close()

void org.keycloak.email.DefaultEmailSenderProvider.close ( )
inline
185  {
186 
187  }

◆ retrieveEmailAddress()

String org.keycloak.email.DefaultEmailSenderProvider.retrieveEmailAddress ( UserModel  user)
inlineprotected
167  {
168  return user.getEmail();
169  }

◆ send()

void org.keycloak.email.DefaultEmailSenderProvider.send ( Map< String, String >  config,
UserModel  user,
String  subject,
String  textBody,
String  htmlBody 
) throws EmailException
inline
59  {
60  Transport transport = null;
61  try {
62  String address = retrieveEmailAddress(user);
63 
64  Properties props = new Properties();
65 
66  if (config.containsKey("host")) {
67  props.setProperty("mail.smtp.host", config.get("host"));
68  }
69 
70  boolean auth = "true".equals(config.get("auth"));
71  boolean ssl = "true".equals(config.get("ssl"));
72  boolean starttls = "true".equals(config.get("starttls"));
73 
74  if (config.containsKey("port") && config.get("port") != null) {
75  props.setProperty("mail.smtp.port", config.get("port"));
76  }
77 
78  if (auth) {
79  props.setProperty("mail.smtp.auth", "true");
80  }
81 
82  if (ssl) {
83  props.setProperty("mail.smtp.ssl.enable", "true");
84  }
85 
86  if (starttls) {
87  props.setProperty("mail.smtp.starttls.enable", "true");
88  }
89 
90  if (ssl || starttls) {
91  setupTruststore(props);
92  }
93 
94  props.setProperty("mail.smtp.timeout", "10000");
95  props.setProperty("mail.smtp.connectiontimeout", "10000");
96 
97  String from = config.get("from");
98  String fromDisplayName = config.get("fromDisplayName");
99  String replyTo = config.get("replyTo");
100  String replyToDisplayName = config.get("replyToDisplayName");
101  String envelopeFrom = config.get("envelopeFrom");
102 
103  Session session = Session.getInstance(props);
104 
105  Multipart multipart = new MimeMultipart("alternative");
106 
107  if (textBody != null) {
108  MimeBodyPart textPart = new MimeBodyPart();
109  textPart.setText(textBody, "UTF-8");
110  multipart.addBodyPart(textPart);
111  }
112 
113  if (htmlBody != null) {
114  MimeBodyPart htmlPart = new MimeBodyPart();
115  htmlPart.setContent(htmlBody, "text/html; charset=UTF-8");
116  multipart.addBodyPart(htmlPart);
117  }
118 
119  SMTPMessage msg = new SMTPMessage(session);
120  msg.setFrom(toInternetAddress(from, fromDisplayName));
121 
122  msg.setReplyTo(new Address[]{toInternetAddress(from, fromDisplayName)});
123  if (replyTo != null && !replyTo.isEmpty()) {
124  msg.setReplyTo(new Address[]{toInternetAddress(replyTo, replyToDisplayName)});
125  }
126  if (envelopeFrom != null && !envelopeFrom.isEmpty()) {
127  msg.setEnvelopeFrom(envelopeFrom);
128  }
129 
130  msg.setHeader("To", address);
131  msg.setSubject(subject, "utf-8");
132  msg.setContent(multipart);
133  msg.saveChanges();
134  msg.setSentDate(new Date());
135 
136  transport = session.getTransport("smtp");
137  if (auth) {
138  transport.connect(config.get("user"), config.get("password"));
139  } else {
140  transport.connect();
141  }
142  transport.sendMessage(msg, new InternetAddress[]{new InternetAddress(address)});
143  } catch (Exception e) {
144  ServicesLogger.LOGGER.failedToSendEmail(e);
145  throw new EmailException(e);
146  } finally {
147  if (transport != null) {
148  try {
149  transport.close();
150  } catch (MessagingException e) {
151  logger.warn("Failed to close transport", e);
152  }
153  }
154  }
155  }
void setupTruststore(Properties props)
Definition: DefaultEmailSenderProvider.java:171
String retrieveEmailAddress(UserModel user)
Definition: DefaultEmailSenderProvider.java:167
static final Logger logger
Definition: DefaultEmailSenderProvider.java:50
final KeycloakSession session
Definition: DefaultEmailSenderProvider.java:52
InternetAddress toInternetAddress(String email, String displayName)
Definition: DefaultEmailSenderProvider.java:157

◆ setupTruststore()

void org.keycloak.email.DefaultEmailSenderProvider.setupTruststore ( Properties  props) throws NoSuchAlgorithmException, KeyManagementException
inlineprivate
171  {
172 
173  JSSETruststoreConfigurator configurator = new JSSETruststoreConfigurator(session);
174 
175  SSLSocketFactory factory = configurator.getSSLSocketFactory();
176  if (factory != null) {
177  props.put("mail.smtp.ssl.socketFactory", factory);
178  if (configurator.getProvider().getPolicy() == HostnameVerificationPolicy.ANY) {
179  props.setProperty("mail.smtp.ssl.trust", "*");
180  }
181  }
182  }
final KeycloakSession session
Definition: DefaultEmailSenderProvider.java:52

◆ toInternetAddress()

InternetAddress org.keycloak.email.DefaultEmailSenderProvider.toInternetAddress ( String  email,
String  displayName 
) throws UnsupportedEncodingException, AddressException, EmailException
inlineprotected
157  {
158  if (email == null || "".equals(email.trim())) {
159  throw new EmailException("Please provide a valid address", null);
160  }
161  if (displayName == null || "".equals(displayName.trim())) {
162  return new InternetAddress(email);
163  }
164  return new InternetAddress(email, displayName, "utf-8");
165  }

メンバ詳解

◆ logger

final Logger org.keycloak.email.DefaultEmailSenderProvider.logger = Logger.getLogger(DefaultEmailSenderProvider.class)
staticprivate

◆ session

final KeycloakSession org.keycloak.email.DefaultEmailSenderProvider.session
private

このクラス詳解は次のファイルから抽出されました: