@Override protected void sendReminder(CalendarItem calItem, Invite invite) throws Exception { Account account = calItem.getAccount(); Locale locale = account.getLocale(); TimeZone tz = Util.getAccountTimeZone(account); MimeMessage mm = new Mime.FixedMimeMessage(JMSession.getSmtpSession(account)); String to = account.getAttr(Provisioning.A_zimbraCalendarReminderDeviceEmail); if (to == null) { ZimbraLog.scheduler.info( "Unable to send calendar reminder sms since %s is not set", Provisioning.A_zimbraCalendarReminderDeviceEmail); return; } mm.setRecipient(javax.mail.Message.RecipientType.TO, new JavaMailInternetAddress(to)); mm.setText(getText(calItem, invite, locale, tz), MimeConstants.P_CHARSET_UTF8); mm.saveChanges(); MailSender mailSender = calItem.getMailbox().getMailSender(); mailSender.setSaveToSent(false); mailSender.sendMimeMessage(null, calItem.getMailbox(), mm); }
private String getText(CalendarItem calItem, Invite invite, Locale locale, TimeZone tz) throws ServiceException { DateFormat dateTimeFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale); dateTimeFormat.setTimeZone(tz); DateFormat onlyDateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale); onlyDateFormat.setTimeZone(tz); String formattedStart; String formattedEnd; if (calItem.getType() == MailItem.Type.APPOINTMENT) { Date start = new Date(new Long(getProperty(NEXT_INST_START_PROP_NAME))); formattedStart = dateTimeFormat.format(start); Date end = invite.getEffectiveDuration().addToDate(start); formattedEnd = dateTimeFormat.format(end); } else { // start date and due date is optional for tasks formattedStart = invite.getStartTime() == null ? "" : onlyDateFormat.format(invite.getStartTime().getDate()); formattedEnd = invite.getEndTime() == null ? "" : onlyDateFormat.format(invite.getEndTime().getDate()); } String location = invite.getLocation(); if (StringUtil.isNullOrEmpty(location)) location = L10nUtil.getMessage(L10nUtil.MsgKey.noLocation); String organizer = null; ZOrganizer zOrganizer = invite.getOrganizer(); if (zOrganizer != null) organizer = zOrganizer.hasCn() ? zOrganizer.getCn() : zOrganizer.getAddress(); if (organizer == null) organizer = ""; String folder = calItem.getMailbox().getFolderById(null, calItem.getFolderId()).getName(); return L10nUtil.getMessage( calItem.getType() == MailItem.Type.APPOINTMENT ? L10nUtil.MsgKey.apptReminderSmsText : L10nUtil.MsgKey.taskReminderSmsText, locale, calItem.getSubject(), formattedStart, formattedEnd, location, organizer, folder); }