package com.constellio.app.ui.pages.management.email; import static com.constellio.app.ui.i18n.i18n.$; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import org.apache.log4j.Logger; import com.constellio.app.ui.entities.EmailServerConfigVO; import com.constellio.app.ui.pages.base.BasePresenter; import com.constellio.model.conf.email.EmailServerConfiguration; import com.constellio.model.conf.email.EmailServerConfigurationRuntimeException; import com.constellio.model.entities.CorePermissions; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.services.emails.EmailServices; import com.constellio.model.services.emails.EmailServicesException; import com.sun.mail.smtp.SMTPMessage; public class EmailServerConfigPresenter extends BasePresenter<EmailServerConfigView> { public static Logger LOGGER = Logger.getLogger(EmailServerConfigPresenter.class); public EmailServerConfigPresenter(EmailServerConfigView view) { super(view); } public void saveButtonClicked(EmailServerConfigVO emailServerConfigVO) { try { modelLayerFactory.getEmailConfigurationsManager().updateEmailServerConfiguration(emailServerConfigVO, collection, true); view.showMessage($("EmailServerConfigView.configSaved")); } catch (EmailServerConfigurationRuntimeException.UnknownServerConfigurationRuntimeException e) { e.printStackTrace(); view.showMessage($("EmailServerConfigView.invalidServerConfig : " + e.getMessage())); } } @Override protected boolean hasPageAccess(String params, User user) { return user.has(CorePermissions.MANAGE_EMAIL_SERVER).globally(); } public EmailServerConfiguration getEmailServerConfiguration() { return modelLayerFactory.getEmailConfigurationsManager().getEmailConfiguration(collection, true); } public String getTestServerMessage(EmailServerConfigVO emailServerConfigVO, String testEmail) { EmailServices emailServices = new EmailServices(); try { Session session = emailServices.openSession(emailServerConfigVO); Message message = testMessage(session, testEmail, emailServerConfigVO.getDefaultSenderEmail()); emailServices.sendEmail(message); return ($("EmailServerConfigView.results.success")); } catch (EmailServicesException.EmailServerException e) { LOGGER.warn(e); return ($("EmailServerConfigView.results.fail") + "\n" + e.getMessage()); } catch (EmailServicesException.EmailTempException e) { LOGGER.warn(e); return ($("EmailServerConfigView.results.fail") + "\n" + e.getMessage()); } catch (EmailServicesException.EmailPermanentException e) { LOGGER.warn(e); return ($("EmailServerConfigView.results.fail") + "\n" + e.getMessage()); } catch (AddressException e) { LOGGER.warn(e); return ($("EmailServerConfigView.results.fail.invalidEmail") + "\n" + e.getMessage()); } catch (MessagingException e) { LOGGER.warn(e); return ($("EmailServerConfigView.results.fail") + "\n" + e.getMessage()); } catch (Exception e) { LOGGER.warn(e); return ($("EmailServerConfigView.results.fail") + "\n" + e.getMessage()); } } private Message testMessage(Session session, String testEmail, String defaultSenderAddress) throws MessagingException { Message message = new SMTPMessage(session); InternetAddress internetAddress = new InternetAddress(testEmail, true); InternetAddress fromAddress = new InternetAddress(defaultSenderAddress, true); message.setFrom(fromAddress); message.setRecipient(Message.RecipientType.TO, internetAddress); message.setText("Test"); return message; } public void backButtonClick() { view.navigate().to().adminModule(); } }