use of org.olat.core.util.mail.MailBundle in project openolat by klemens.
the class UserDeletionManager method sendUserDeleteEmailTo.
/**
* Send 'delete'- emails to a list of identities. The delete email is an announcement for the user-deletion.
*
* @param selectedIdentities
* @return String with warning message (e.g. email-address not valid, could not send email).
* If there is no warning, the return String is empty ("").
*/
public String sendUserDeleteEmailTo(List<Identity> selectedIdentities, MailTemplate template, boolean isTemplateChanged, String keyEmailSubject, String keyEmailBody, Identity sender, Translator pT) {
StringBuilder buf = new StringBuilder();
if (template != null) {
template.addToContext("responseTo", deletionModule.getEmailResponseTo());
for (Iterator<Identity> iter = selectedIdentities.iterator(); iter.hasNext(); ) {
Identity identity = iter.next();
if (!isTemplateChanged) {
// Email template has NOT changed => take translated version of subject and body text
Translator identityTranslator = Util.createPackageTranslator(SelectionController.class, I18nManager.getInstance().getLocaleOrDefault(identity.getUser().getPreferences().getLanguage()));
template.setSubjectTemplate(identityTranslator.translate(keyEmailSubject));
template.setBodyTemplate(identityTranslator.translate(keyEmailBody));
}
template.putVariablesInMailContext(template.getContext(), identity);
logDebug(" Try to send Delete-email to identity=" + identity.getName() + " with email=" + identity.getUser().getProperty(UserConstants.EMAIL, null));
MailerResult result = new MailerResult();
MailBundle bundle = mailManager.makeMailBundle(null, identity, template, null, null, result);
if (bundle != null) {
mailManager.sendMessage(bundle);
}
if (template.getCpfrom()) {
MailBundle ccBundle = mailManager.makeMailBundle(null, sender, template, sender, null, result);
if (ccBundle != null) {
mailManager.sendMessage(ccBundle);
}
}
if (result.getReturnCode() != MailerResult.OK) {
buf.append(pT.translate("email.error.send.failed", new String[] { identity.getUser().getProperty(UserConstants.EMAIL, null), identity.getName() })).append("\n");
}
logAudit("User-Deletion: Delete-email send to identity=" + identity.getName() + " with email=" + identity.getUser().getProperty(UserConstants.EMAIL, null));
markSendEmailEvent(identity);
}
} else {
// no template => User decides to sending no delete-email, mark only in lifecycle table 'sendEmail'
for (Iterator<Identity> iter = selectedIdentities.iterator(); iter.hasNext(); ) {
Identity identity = iter.next();
logAudit("User-Deletion: Move in 'Email sent' section without sending email, identity=" + identity.getName());
markSendEmailEvent(identity);
}
}
return buf.toString();
}
use of org.olat.core.util.mail.MailBundle in project openolat by klemens.
the class DENManageParticipantsController method event.
@Override
public void event(UserRequest ureq, Controller source, Event event) {
if (source == tableListParticipants) {
if (event.getCommand().equals(Table.COMMANDLINK_ROWACTION_CLICKED)) {
TableEvent tableEvent = (TableEvent) event;
// open window for choosen date to manage the enrolled users or manually add
if (tableEvent.getActionId().equals(DENListTableDataModel.CHANGE_ACTION)) {
selectedEvent = listTableData.getObject(tableEvent.getRowId());
List<Identity> participants = denManager.getEventParticipants(selectedEvent);
participantsTableData = new DENParticipantsTableDataModel(participants);
removeAsListenerAndDispose(tableManageParticipants);
tableManageParticipants = denManager.createParticipantsTable(ureq, getWindowControl(), getTranslator(), participantsTableData);
listenTo(tableManageParticipants);
participantsVC = createVelocityContainer("participants");
DateFormat df = new SimpleDateFormat();
participantsVC.contextPut("dateTitle", selectedEvent.getSubject());
participantsVC.contextPut("dateTimeframe", df.format(selectedEvent.getBegin()) + " - " + df.format(selectedEvent.getEnd()));
participantsVC.put("participantsTable", tableManageParticipants.getInitialComponent());
addParticipantButton = LinkFactory.createButton("participants.add", participantsVC, this);
removeAsListenerAndDispose(manageParticipantsModalCntrl);
manageParticipantsModalCntrl = new CloseableModalController(getWindowControl(), "close", participantsVC, true, translate("dates.table.participant.manage"));
listenTo(manageParticipantsModalCntrl);
manageParticipantsModalCntrl.activate();
}
} else {
TableMultiSelectEvent tmse = (TableMultiSelectEvent) event;
BitSet selection = tmse.getSelection();
// delete all users from the selected dates
if (tmse.getAction().equals(DENListTableDataModel.DELETE_ACTION) && selection.cardinality() > 0) {
selectedIds = denManager.getSelectedEventParticipants(dateList, selection);
dateList = denManager.deleteParticipants(ores, courseNode, denManager.getSelectedEventIDs(dateList, selection));
listTableData.setObjects(dateList);
// send notification mail
createNotificationMail(ureq, courseNode.getShortTitle(), REMOVE_ACTION);
} else if (tmse.getAction().equals(DENListTableDataModel.MAIL_ACTION) && selection.cardinality() > 0) {
// send email to all users from the selected dates
List<Identity> participants = denManager.getSelectedEventParticipants(dateList, selection);
createParticipantsMail(ureq, participants);
} else if (selection.cardinality() == 0) {
showWarning("participants.message.empty");
}
}
} else if (source == userSearchCntrl) {
if (event == Event.CANCELLED_EVENT) {
userSearchCMC.deactivate();
} else {
List<Identity> toAdd = null;
selectedIds = new ArrayList<Identity>();
if (event instanceof SingleIdentityChosenEvent) {
SingleIdentityChosenEvent singleEvent = (SingleIdentityChosenEvent) event;
Identity choosenIdentity = singleEvent.getChosenIdentity();
toAdd = new ArrayList<Identity>();
toAdd.add(choosenIdentity);
} else if (event instanceof MultiIdentityChosenEvent) {
MultiIdentityChosenEvent multiEvent = (MultiIdentityChosenEvent) event;
toAdd = multiEvent.getChosenIdentities();
}
boolean showMessage = false;
if (toAdd != null && toAdd.size() > 0) {
for (Identity identity : toAdd) {
status = denManager.doEnroll(identity, selectedEvent, ores, courseNode, true);
if (!status.isEnrolled() && status.getErrorMessage().equals(DENStatus.ERROR_ALREADY_ENROLLED))
showMessage = true;
else
selectedIds.add(identity);
}
if (showMessage)
showWarning("enrollment.warning.manual");
refreshTables();
}
userSearchCMC.deactivate();
if (selectedIds.size() > 0) {
// write notification mail
createNotificationMail(ureq, selectedEvent.getSubject(), ADD_ACTION);
}
}
} else if (source == tableManageParticipants) {
if (event.getCommand().equals(Table.COMMANDLINK_ROWACTION_CLICKED)) {
TableEvent tableEvent = (TableEvent) event;
// delete single user from event
if (tableEvent.getActionId().equals(DENParticipantsTableDataModel.REMOVE_ACTION)) {
Identity identity = participantsTableData.getEntryAt(tableEvent.getRowId());
status = denManager.cancelEnroll(identity, selectedEvent, ores);
if (!status.isCancelled())
showError();
else // send notification mail
{
selectedIds.clear();
selectedIds.add(identity);
createNotificationMail(ureq, selectedEvent.getSubject(), REMOVE_ACTION);
}
refreshTables();
// write email to single user
} else if (tableEvent.getActionId().equals(DENParticipantsTableDataModel.MAIL_ACTION)) {
List<Identity> participants = new ArrayList<Identity>();
participants.add(participantsTableData.getEntryAt(tableEvent.getRowId()));
createParticipantsMail(ureq, participants);
}
}
} else if (source == notificationCtr && event == Event.DONE_EVENT) {
if (notificationCtr.getMailTemplate() != null) {
Identity sender = ureq.getIdentity();
MailerResult result = new MailerResult();
String metaId = UUID.randomUUID().toString().replace("-", "");
MailContext context = new MailContextImpl(getWindowControl().getBusinessControl().getAsString());
MailBundle[] bundles = mailManager.makeMailBundles(context, selectedIds, notificationCtr.getMailTemplate(), sender, metaId, result);
result.append(mailManager.sendMessage(bundles));
if (notificationCtr.getMailTemplate().getCpfrom()) {
MailBundle ccBundles = mailManager.makeMailBundle(context, sender, notificationCtr.getMailTemplate(), sender, metaId, result);
result.append(mailManager.sendMessage(ccBundles));
}
MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale());
}
notificationCmc.deactivate();
selectedIds.clear();
} else if (source == contactCtr) {
notificationCmc.deactivate();
}
}
use of org.olat.core.util.mail.MailBundle in project openolat by klemens.
the class CourseCreationMailHelper method sentNotificationMail.
/**
* Sent notification mail for signalling that course creation was successful.
*
* @param ureq user request
* @param config course configuration object
* @return mailer result object
*/
public static final MailerResult sentNotificationMail(final UserRequest ureq, final CourseCreationConfiguration config) {
Translator translator = Util.createPackageTranslator(CourseCreationMailHelper.class, ureq.getLocale());
log.info("Course creation with wizard finished. [User: " + ureq.getIdentity().getName() + "] [Course name: " + config.getCourseTitle() + "]");
String subject = translator.translate("mail.subject", new String[] { config.getCourseTitle() });
String body = translator.translate("mail.body.0", new String[] { config.getCourseTitle() });
body += translator.translate("mail.body.1");
body += translator.translate("mail.body.2", new String[] { config.getExtLink() });
body += translator.translate("mail.body.3");
body += translator.translate("mail.body.4");
int counter = 1;
if (config.isCreateSinglePage()) {
body += translator.translate("mail.body.4.2", new String[] { Integer.toString(++counter) });
}
if (config.isCreateEnrollment()) {
body += translator.translate("mail.body.4.3", new String[] { Integer.toString(++counter) });
}
if (config.isCreateDownloadFolder()) {
body += translator.translate("mail.body.4.4", new String[] { Integer.toString(++counter) });
}
if (config.isCreateForum()) {
body += translator.translate("mail.body.4.5", new String[] { Integer.toString(++counter) });
}
if (config.isCreateContactForm()) {
body += translator.translate("mail.body.4.6", new String[] { Integer.toString(++counter) });
}
body += translator.translate("mail.body.5");
String url = CoreSpringFactory.getImpl(HelpModule.class).getHelpProvider().getURL(ureq.getLocale(), "");
body += translator.translate("mail.body.6", new String[] { url });
body += translator.translate("mail.body.greetings");
MailBundle bundle = new MailBundle();
bundle.setToId(ureq.getIdentity());
bundle.setContent(subject, body);
return CoreSpringFactory.getImpl(MailManager.class).sendExternMessage(bundle, null, false);
}
use of org.olat.core.util.mail.MailBundle in project openolat by klemens.
the class GroupController method doRemoveIdentitiesFromGroup.
private void doRemoveIdentitiesFromGroup(UserRequest ureq, List<Identity> toBeRemoved, MailTemplate mailTemplate) {
fireEvent(ureq, new IdentitiesRemoveEvent(toBeRemoved));
identitiesTableModel.remove(toBeRemoved);
if (tableCtr != null) {
// can be null in the follwoing case.
// the user which does the removal is also in the list of toBeRemoved
// hence the fireEvent does trigger a disposal of a GroupController, which
// in turn nullifies the tableCtr... see also OLAT-3331
tableCtr.modelChanged();
}
// send the notification mail
if (mailTemplate != null) {
// means no sender in footer
Identity sender = null;
if (showSenderInRemovMailFooter) {
sender = ureq.getIdentity();
}
String metaId = UUID.randomUUID().toString();
MailContext context = new MailContextImpl(getWindowControl().getBusinessControl().getAsString());
MailerResult result = new MailerResult();
MailBundle[] bundles = mailManager.makeMailBundles(context, toBeRemoved, mailTemplate, sender, metaId, result);
result.append(mailManager.sendMessage(bundles));
if (mailTemplate.getCpfrom()) {
MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result);
result.append(mailManager.sendMessage(ccBundle));
}
MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale());
}
}
use of org.olat.core.util.mail.MailBundle in project OpenOLAT by OpenOLAT.
the class ProfileFormController method createChangeEmailWorkflow.
private void createChangeEmailWorkflow(UserRequest ureq) {
// send email
changedEmail = changedEmail.trim();
String body = null;
String subject = null;
// get remote address
String ip = ureq.getHttpReq().getRemoteAddr();
String today = DateFormat.getDateInstance(DateFormat.LONG, ureq.getLocale()).format(new Date());
// mailer configuration
String serverpath = Settings.getServerContextPathURI();
String servername = ureq.getHttpReq().getServerName();
logDebug("this servername is " + servername + " and serverpath is " + serverpath, null);
// load or create temporary key
Map<String, String> mailMap = new HashMap<>();
mailMap.put("currentEMail", currentEmail);
mailMap.put("changedEMail", changedEmail);
XStream xml = XStreamHelper.createXStreamInstance();
String serMailMap = xml.toXML(mailMap);
TemporaryKey tk = rm.createAndDeleteOldTemporaryKey(identityToModify.getKey(), serMailMap, ip, RegistrationManager.EMAIL_CHANGE);
// create date, time string
Calendar cal = Calendar.getInstance();
cal.setTime(tk.getCreationDate());
cal.add(Calendar.DAY_OF_WEEK, ChangeEMailController.TIME_OUT);
String time = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, ureq.getLocale()).format(cal.getTime());
// create body and subject for email
String link = serverpath + "/dmz/emchange/index.html?key=" + tk.getRegistrationKey() + "&language=" + ureq.getLocale().getLanguage();
if (Settings.isDebuging()) {
logInfo(link, null);
}
String currentEmailDisplay = userManager.getUserDisplayEmail(currentEmail, getLocale());
String changedEmaildisplay = userManager.getUserDisplayEmail(changedEmail, getLocale());
body = translate("email.change.body", new String[] { link, time, currentEmailDisplay, changedEmaildisplay }) + SEPARATOR + translate("email.change.wherefrom", new String[] { serverpath, today, ip });
subject = translate("email.change.subject");
// send email
try {
MailBundle bundle = new MailBundle();
bundle.setFrom(WebappHelper.getMailConfig("mailReplyTo"));
bundle.setTo(changedEmail);
bundle.setContent(subject, body);
MailerResult result = mailManager.sendMessage(bundle);
boolean isMailSent = result.isSuccessful();
if (isMailSent) {
tk.setMailSent(true);
// set key
User user = this.identityToModify.getUser();
user.setProperty("emchangeKey", tk.getRegistrationKey());
UserManager.getInstance().updateUser(user);
getWindowControl().setInfo(translate("email.sent"));
} else {
tk.setMailSent(false);
rm.deleteTemporaryKeyWithId(tk.getRegistrationKey());
getWindowControl().setError(translate("email.notsent"));
}
} catch (Exception e) {
rm.deleteTemporaryKeyWithId(tk.getRegistrationKey());
getWindowControl().setError(translate("email.notsent"));
}
}
Aggregations