diff --git a/account/pom.xml b/account/pom.xml
index 0de53c8..59c3a80 100644
--- a/account/pom.xml
+++ b/account/pom.xml
@@ -41,12 +41,10 @@
org.freemarker
freemarker
2.3.23
-
-
+
javax
javaee-api
- 7.0
provided
diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java b/account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java
index 6640d6c..2b1cbe8 100644
--- a/account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java
+++ b/account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java
@@ -1,6 +1,7 @@
package de.muehlencord.shared.account.business.account;
import de.muehlencord.shared.account.business.ConfigService;
+import de.muehlencord.shared.account.business.mail.MailException;
import de.muehlencord.shared.account.business.mail.MailService;
import de.muehlencord.shared.account.business.mail.MailTemplateException;
import de.muehlencord.shared.account.entity.AccountEntity;
@@ -172,7 +173,7 @@ public class AccountControl {
em.merge(account);
return true;
- } catch (MessagingException | MailTemplateException | URISyntaxException | IOException | TemplateException ex) {
+ } catch (MailException ex) {
LOGGER.log(Level.ERROR, "Error while sending password reset mail. " + ex.toString());
if (LOGGER.isDebugEnabled()) {
LOGGER.log(Level.DEBUG, "Error while sending password reset mail.", ex);
diff --git a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java b/account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java
index 88283a1..0b6087a 100644
--- a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java
+++ b/account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java
@@ -1,15 +1,12 @@
package de.muehlencord.shared.account.business.mail;
import de.muehlencord.shared.account.entity.AccountEntity;
-import freemarker.template.TemplateException;
-import java.io.IOException;
-import java.net.URISyntaxException;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
-import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.mail.BodyPart;
@@ -35,12 +32,12 @@ public class MailService {
@Resource(lookup = "java:jboss/mail/ssgMail")
private Session mailSession;
-
+
public void sendTestEmail(String recipient) throws MailException {
sendMail(recipient, "Test email", "This is a test email");
}
- public void sendTestHtmlEmail(String recipient) {
+ public void sendTestHtmlEmail(String recipient) throws MailException {
Date now = new Date();
AccountEntity account = new AccountEntity("joern.muehlencord", "joern@muehlencord.de", "Jörn", "Mühlencord", "secret", 0, "NEW", now, "admin", now, "admin");
MailDatamodel dataModel = new MailDatamodel(account);
@@ -57,17 +54,17 @@ public class MailService {
message.setText(body);
Transport.send(message);
} catch (MessagingException ex) {
- throw new MailException ("Error while sending email.", ex);
+ throw new MailException("Error while sending email.", ex);
}
}
- public void sendHTMLMail(String recipient, String subject, MailDatamodel dataModel, String templateName) {
+ public void sendHTMLMail(String recipient, String subject, MailDatamodel dataModel, String templateName) throws MailException {
try {
Message message = new MimeMessage(mailSession);
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient, false));
message.setSubject(subject);
- String body = mailTemplateService.getStringFromTemplate("password_reset_html", dataModel);
+ String body = mailTemplateService.getStringFromTemplate(templateName, dataModel);
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(body, "text/html");
@@ -78,26 +75,30 @@ public class MailService {
Transport.send(message);
} catch (MessagingException | MailTemplateException ex) {
- FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error while sending email", "Exception: " + ex.toString());
- FacesContext context = FacesContext.getCurrentInstance();
- context.addMessage(null, message);
+ throw new MailException("Error while sending email.", ex);
}
}
- public void sendPasswortResetStartEmail(AccountEntity account, String token) throws MessagingException, URISyntaxException, IOException, TemplateException, MailTemplateException {
+ public void sendPasswortResetStartEmail(AccountEntity account, String token) throws MailException {
MailDatamodel model = new MailDatamodel(account);
- // String absoluteWebPath = FacesContext.getCurrentInstance().getExternalContext().getApplicationContextPath();
- ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
- String resetPage = "/login.xhtml?token=" + token;
- URL baseUrl = new URL(externalContext.getRequestScheme(),
- externalContext.getRequestServerName(),
- externalContext.getRequestServerPort(),
- externalContext.getRequestContextPath());
+ try {
+ // String absoluteWebPath = FacesContext.getCurrentInstance().getExternalContext().getApplicationContextPath();
+ ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
+ String resetPage = "/login.xhtml?token=" + token;
+ URL baseUrl;
- model.addParameter("url", baseUrl.toString());
- model.addParameter("resetUrl", baseUrl.toString() + resetPage);
+ // TODO move out of this class, this is not mandatorily connected to a form
+ baseUrl = new URL(externalContext.getRequestScheme(),
+ externalContext.getRequestServerName(),
+ externalContext.getRequestServerPort(),
+ externalContext.getRequestContextPath());
+ model.addParameter("url", baseUrl.toString());
+ model.addParameter("resetUrl", baseUrl.toString() + resetPage);
+ } catch (MalformedURLException ex) {
+ throw new MailException("Error while sending email.", ex);
+ }
sendHTMLMail(account.getEmailaddress(), "Reset your password", model, "password_reset");
}