Chciałbym zmienić zachowanie powiadamiania JIRA i dodać dodatkowe odbiorniki do określonych zdarzeń. Wiem, że mogę zarejestrować EventPublisher
i przechwycić wszystkie niezbędne zdarzenia.Jak ponownie użyć szablonów prędkości JIRA dla wiadomości e-mail?
public class MyIssueCreatedResolvedListenerImpl implements InitializingBean, DisposableBean {
private final EventPublisher eventPublisher;
public MyIssueCreatedResolvedListenerImpl(EventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
@Override
public void afterPropertiesSet() throws Exception {
eventPublisher.register(this);
}
@Override
public void destroy() throws Exception {
eventPublisher.unregister(this);
}
@EventListener
public void onIssueEvent(IssueEvent issueEvent) {
// Process the issue events. I'm using the code presented below.
}
}
W onIssueEvent
chciałbym ponownie wykorzystać istniejące szablony e-mail z JIRA i wysyłać je z obiektu do dalszych odbiorników SMTPMailServer
. W tej chwili używam następującego kodu do odczytywania i wypełniania szablonów prędkości.
ApplicationProperties ap = ComponentAccessor.getApplicationProperties();
String baseUrl = ap.getString(APKeys.JIRA_BASEURL);
String webworkEncoding = ap.getString(APKeys.JIRA_WEBWORK_ENCODING);
VelocityManager vm = ComponentAccessor.getVelocityManager();
VelocityParamFactory vp = ComponentAccessor.getVelocityParamFactory();
Map context = vp.getDefaultVelocityParams();
context.put("baseurl", baseUrl);
context.put("currentTimestamp", new Date());
context.put("issue", issueEvent.getIssue());
String renderedText = vm.getEncodedBody("templates/email/html/", "issueclosed.vm", baseUrl, webworkEncoding, context);
SMTPMailServer mailServer = MailFactory.getServerManager().getDefaultSMTPMailServer();
Email email = new Email("<E-Mail-Adress>");
email.setMimeType("text/html");
email.setEncoding("utf-8");
email.setBody(renderedText);
try {
mailServer.send(email);
} catch (MailException e) {
e.printStackTrace();
}
Powyższy kod działa częściowo. Kilka pól jest wypełnionych, ale nadal brakuje mi CSS, obrazów lub i18n w powiadomieniu e-mail. Uwaga: nie będę używać żadnych dodatkowych dodatków z rynku.
Czy to jest poprawna implementacja do ponownego użycia szablonów JIRA?
Jak dołączyć CSS, obrazy, i18n itp.? Czy mogę zastosować inne podejście?