use of hudson.tasks.MailMessageIdAction in project hudson-2.x by hudson.
the class BaseBuildResultMail method createEmptyMail.
/**
* Creates empty mail.
*
* @param build build.
* @param listener listener.
* @return empty mail.
* @throws MessagingException exception if any.
*/
protected MimeMessage createEmptyMail(AbstractBuild<?, ?> build, BuildListener listener) throws MessagingException {
MimeMessage msg = new HudsonMimeMessage(Mailer.descriptor().createSession());
// TODO: I'd like to put the URL to the page in here,
// but how do I obtain that?
msg.setContent("", "text/plain");
msg.setFrom(new InternetAddress(Mailer.descriptor().getAdminAddress()));
msg.setSentDate(new Date());
Set<InternetAddress> rcp = new LinkedHashSet<InternetAddress>();
StringTokenizer tokens = new StringTokenizer(getRecipients());
while (tokens.hasMoreTokens()) {
String address = tokens.nextToken();
if (address.startsWith("upstream-individuals:")) {
// people who made a change in the upstream
String projectName = address.substring("upstream-individuals:".length());
AbstractProject up = Hudson.getInstance().getItemByFullName(projectName, AbstractProject.class);
if (up == null) {
listener.getLogger().println("No such project exist: " + projectName);
continue;
}
includeCulpritsOf(up, build, listener, rcp);
} else {
// ordinary address
try {
rcp.add(new InternetAddress(address));
} catch (AddressException e) {
// report bad address, but try to send to other addresses
e.printStackTrace(listener.error(e.getMessage()));
}
}
}
if (CollectionUtils.isNotEmpty(upstreamProjects)) {
for (AbstractProject project : upstreamProjects) {
includeCulpritsOf(project, build, listener, rcp);
}
}
if (sendToIndividuals) {
Set<User> culprits = build.getCulprits();
if (debug)
listener.getLogger().println("Trying to send e-mails to individuals who broke the build. sizeof(culprits)==" + culprits.size());
rcp.addAll(buildCulpritList(listener, culprits));
}
msg.setRecipients(Message.RecipientType.TO, rcp.toArray(new InternetAddress[rcp.size()]));
AbstractBuild<?, ?> pb = build.getPreviousBuild();
if (pb != null) {
MailMessageIdAction b = pb.getAction(MailMessageIdAction.class);
if (b != null) {
msg.setHeader("In-Reply-To", b.messageId);
msg.setHeader("References", b.messageId);
}
}
return msg;
}
Aggregations