This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit a07b02487e14d619299d939fc923773c81ba895f Merge: b5565118 0d7838eb Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Nov 7 14:58:08 2017 +0100 Merge tag '3.0.3' into develop correction envoie de mail connexion a la DB # Conflicts: # pollen-persistence/pom.xml # pollen-rest-api/pom.xml # pollen-services/pom.xml # pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java # pollen-ui-riot-js/package.json # pollen-ui-riot-js/pom.xml # pollen-ui-riot-js/src/main/web/i18n/en.json # pollen-ui-riot-js/src/main/web/i18n/fr.json # pollen-votecounting-aggregator/pom.xml # pollen-votecounting-api/pom.xml # pollen-votecounting-borda/pom.xml # pollen-votecounting-condorcet/pom.xml # pollen-votecounting-coombs/pom.xml # pollen-votecounting-cumulative/pom.xml # pollen-votecounting-instant-runoff/pom.xml # pollen-votecounting-normal/pom.xml # pollen-votecounting-number/pom.xml # pom.xml pollen-services/pom.xml | 2 +- .../pollen/services/service/FeedbackService.java | 1 + .../services/service/NotificationService.java | 23 ++++++ .../services/service/PollenServiceSupport.java | 5 ++ .../pollen/services/service/mail/EmailService.java | 85 ++++++++-------------- 5 files changed, 61 insertions(+), 55 deletions(-) diff --cc pollen-services/pom.xml index 8a1e2493,482d98a5..53022cab --- a/pollen-services/pom.xml +++ b/pollen-services/pom.xml @@@ -116,11 -111,6 +116,11 @@@ </dependency> <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> - </dependency> ++ </dependency> + + <dependency> <groupId>com.github.spullara.mustache.java</groupId> <artifactId>compiler</artifactId> </dependency> diff --cc pollen-services/src/main/java/org/chorem/pollen/services/service/NotificationService.java index 938cc677,763db9a8..446c2d01 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/NotificationService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/NotificationService.java @@@ -79,77 -75,78 +79,85 @@@ import java.util.Set public class NotificationService extends PollenServiceSupport { public void onUserCreated(PollenUser user) { - if (StringUtils.isNotBlank(user.getEmail())) { + if (user.getDefaultEmailAddress() != null) { EmailService emailService = getEmailService(); UserAccountCreatedEmail email = emailService.newUserAccountCreatedEmail(user); - email.addTo(user.getEmail()); + email.addTo(user.getDefaultEmailAddress().getEmailAddress()); emailService.send(email); + commit(); } } public void onUserCreatedFromProvider(PollenUser user, UserCredential credential) { - if (StringUtils.isNotBlank(user.getEmail())) { + if (user.getDefaultEmailAddress() != null) { EmailService emailService = getEmailService(); UserAccountCreatedFromProviderEmail email = emailService.newUserAccountCreatedFromProviderEmail(user, credential); - email.addTo(user.getEmail()); + email.addTo(user.getDefaultEmailAddress().getEmailAddress()); emailService.send(email); + commit(); } } - public void onResendValidation(PollenUser user) { + public void onResendValidation(PollenUser user, PollenUserEmailAddress emailAddress) { EmailService emailService = getEmailService(); - ResendValidationEmail email = emailService.newUserResendValidationEmail(user); - email.addTo(user.getEmail()); + ResendValidationEmail email = emailService.newUserResendValidationEmail(user, emailAddress); + email.addTo(emailAddress.getEmailAddress()); emailService.send(email); + commit(); } public void onUserEdited(PollenUser user) { - if (StringUtils.isNotBlank(user.getEmail())) { + if (user.getDefaultEmailAddress() != null) { EmailService emailService = getEmailService(); UserAccountEditedEmail email = emailService.newUserAccountEditedEmail(user); - email.addTo(user.getEmail()); + email.addTo(user.getDefaultEmailAddress().getEmailAddress()); emailService.send(email); + commit(); } } public void onUserDeleted(PollenUser user) { - if (StringUtils.isNotBlank(user.getEmail())) { + if (user.getDefaultEmailAddress() != null) { EmailService emailService = getEmailService(); UserAccountDeletedEmail email = emailService.newUserAccountDeletedEmail(user); - email.addTo(user.getEmail()); + email.addTo(user.getDefaultEmailAddress().getEmailAddress()); emailService.send(email); + commit(); } } public void onUserPasswordChanged(PollenUser user) { - if (StringUtils.isNotBlank(user.getEmail())) { + if (user.getDefaultEmailAddress() != null) { EmailService emailService = getEmailService(); UserAccountPasswordChangedEmail email = emailService.newUserAccountPasswordChangedEmail(user); - email.addTo(user.getEmail()); + email.addTo(user.getDefaultEmailAddress().getEmailAddress()); emailService.send(email); + commit(); } } - public void onUserEmailValidated(PollenUser user) { + public void onUserEmailAddressAdded(PollenUser user, PollenUserEmailAddress emailAddress) { + EmailService emailService = getEmailService(); + UserAccountEmailAddressAddedEmail email = emailService.newUserAccountEmailAddressAddedEmail(user, emailAddress); + email.addTo(emailAddress.getEmailAddress()); + emailService.send(email); + } + + public void onUserEmailValidated(PollenUser user, PollenUserEmailAddress emailAddress) { EmailService emailService = getEmailService(); UserAccountEmailValidatedEmail email = emailService.newUserAccountEmailValidatedEmail(user); - email.addTo(user.getEmail()); + email.addTo(emailAddress.getEmailAddress()); emailService.send(email); + commit(); } public void onUserLostPasswordAsked(PollenUser user, String newPassword) { - if (StringUtils.isNotBlank(user.getEmail())) { + if (user.getDefaultEmailAddress() != null) { EmailService emailService = getEmailService(); LostPasswordEmail email = emailService.newLostPasswordEmail(user, newPassword); - email.addTo(user.getEmail()); + email.addTo(user.getDefaultEmailAddress().getEmailAddress()); emailService.send(email); + commit(); } } @@@ -353,9 -362,10 +373,10 @@@ getAdminsToSentReport(poll, comment).forEach(admin -> { CommentReportForAdminEmail commentReportForAdminEmail = emailService.newCommentReportForAdminEmail(poll, comment, report, admin); - commentReportForAdminEmail.addTo(admin.getEmail()); + commentReportForAdminEmail.addTo(admin.getDefaultEmailAddress().getEmailAddress()); emailService.send(commentReportForAdminEmail); }); + commit(); } @@@ -389,9 -399,10 +410,10 @@@ getAdminsToSentReport(poll, choice).forEach(admin -> { ChoiceReportForAdminEmail choiceReportForAdminEmail = emailService.newChoiceReportForAdminEmail(poll, choice, report, admin); - choiceReportForAdminEmail.addTo(admin.getEmail()); + choiceReportForAdminEmail.addTo(admin.getDefaultEmailAddress().getEmailAddress()); emailService.send(choiceReportForAdminEmail); }); + commit(); } @@@ -411,17 -422,10 +433,18 @@@ getAdminsToSentReport(poll, poll).forEach(admin -> { PollReportForAdminEmail pollReportForAdminEmail = emailService.newPollReportForAdminEmail(poll, report, admin); - pollReportForAdminEmail.addTo(admin.getEmail()); + pollReportForAdminEmail.addTo(admin.getDefaultEmailAddress().getEmailAddress()); emailService.send(pollReportForAdminEmail); }); + commit(); } + + public void onExceedingMaxVoters(Poll poll, int maxVoters) { + EmailService emailService = getEmailService(); + + ExceedingMaxVotersEmail email = emailService.newExceedingMaxVotersEmail(poll, maxVoters); + email.addTo(poll.getCreator().getEmail()); + emailService.send(email); + } } diff --cc pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java index d7c4d413,78517ad4..767e04ea --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java @@@ -33,10 -31,7 +33,8 @@@ import org.apache.commons.logging.Log import org.apache.commons.logging.LogFactory; import org.apache.commons.mail.Email; import org.apache.commons.mail.EmailException; +import org.apache.commons.mail.MultiPartEmail; import org.apache.commons.mail.SimpleEmail; - import org.chorem.pollen.persistence.PollenTopiaApplicationContext; - import org.chorem.pollen.persistence.PollenTopiaPersistenceContext; import org.chorem.pollen.persistence.entity.Choice; import org.chorem.pollen.persistence.entity.Comment; import org.chorem.pollen.persistence.entity.EmailToResend; @@@ -379,61 -348,16 +375,42 @@@ public class EmailService extends Polle if (mail.isRecipientProvided()) { - Runnable emailSendingTask = () -> { - String subject = mail.getSubject(); - String body = getBody(mail); - Set<String> tos = mail.getTos(); - Set<String> bccs = mail.getBccs(); + String subject = mail.getSubject(); + String body = getBody(mail); + Set<String> tos = mail.getTos(); + Set<String> bccs = mail.getBccs(); - String smtpFrom = getPollenServiceConfig().getSmtpFrom(); ++ String smtpFrom = getPollenServiceConfig().getSmtpFrom(); + - InternetAddress fromAddress = null; - try { - fromAddress = new InternetAddress(smtpFrom); - - if (StringUtils.isNotBlank(mail.getFromName())) { - String personal = I18n.l(getLocale(),"pollen.service.mail.from.via", mail.getFromName(), fromAddress.getPersonal()); - fromAddress.setPersonal(personal); - } - } catch (AddressException | UnsupportedEncodingException e) { - throw new PollenTechnicalException("Error on smtp from adresse", e); ++ InternetAddress fromAddress = null; ++ try { ++ fromAddress = new InternetAddress(smtpFrom); ++ ++ if (StringUtils.isNotBlank(mail.getFromName())) { ++ String personal = I18n.l(getLocale(),"pollen.service.mail.from.via", mail.getFromName(), fromAddress.getPersonal()); ++ fromAddress.setPersonal(personal); + } ++ } catch (AddressException | UnsupportedEncodingException e) { ++ throw new PollenTechnicalException("Error on smtp from adresse", e); ++ } + - String[] emailSplit = fromAddress.getAddress().split("@"); - String userFrom = emailSplit[0]; - String domainFrom = emailSplit[1]; - fromAddress.setAddress(userFrom + "+" + getMailId(mail) + "@" + domainFrom); ++ String[] emailSplit = fromAddress.getAddress().split("@"); ++ String userFrom = emailSplit[0]; ++ String domainFrom = emailSplit[1]; ++ fromAddress.setAddress(userFrom + "+" + getMailId(mail) + "@" + domainFrom); + - String from = fromAddress.toUnicodeString(); - Collection<InternetAddress> replyTo = mail.getReplyTo(); ++ String from = fromAddress.toUnicodeString(); ++ Collection<InternetAddress> replyTo = mail.getReplyTo(); + - try { - doSend(subject, body, from, replyTo, tos, bccs); - - } catch (EmailException e) { - - if (log.isErrorEnabled()) { - log.error("Error while sending an email, add it to the email to resend", e); - } - - EmailToResend emailToResend = new EmailToResendImpl(); - emailToResend.setSubject(subject); - emailToResend.setBody(body); - emailToResend.setAdrFrom(from); - emailToResend.setReplyTo(replyTo.stream().map(InternetAddress::toUnicodeString).reduce("", (s, s2) -> s + ", " + s2)); - emailToResend.setTos(StringUtils.join(tos, RECIPIENT_SEPARATOR)); - emailToResend.setBccs(StringUtils.join(bccs, RECIPIENT_SEPARATOR)); - - Map<String, String> topiaProperties = getPollenServiceConfig().getTopiaProperties(); - BeanTopiaConfiguration topiaConfiguration = new TopiaConfigurationBuilder().readMap(topiaProperties); - try (PollenTopiaApplicationContext pollenTopiaApplicationContext = new PollenTopiaApplicationContext(topiaConfiguration)) { - PollenTopiaPersistenceContext pollenTopiaPersistenceContext = pollenTopiaApplicationContext.newPersistenceContext(); - pollenTopiaPersistenceContext.getEmailToResendDao().create(emailToResend); - pollenTopiaPersistenceContext.commit(); - } - } - }; - new Thread(emailSendingTask).start(); ++ ++ + EmailToResend emailToResend = getEmailToResendDao().create(); + emailToResend.setSubject(subject); + emailToResend.setBody(body); ++ emailToResend.setAdrFrom(from); ++ emailToResend.setReplyTo(replyTo.stream().map(InternetAddress::toUnicodeString).reduce("", (s, s2) -> s + ", " + s2)); + emailToResend.setTos(StringUtils.join(tos, RECIPIENT_SEPARATOR)); + emailToResend.setBccs(StringUtils.join(bccs, RECIPIENT_SEPARATOR)); } else { if (log.isErrorEnabled()) { -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.