You can send mails from a script step with this java class.
import java.io.File;
import java.util.Map;
import java.util.concurrent.Callable;
import org.eclipse.core.resources.IProject;
import ch.ivyteam.ivy.components.config.EmailConfiguration;
import ch.ivyteam.ivy.email.EmailSetupConfiguration;
import ch.ivyteam.ivy.email.EmailSetupProviderUtil;
import ch.ivyteam.ivy.email.SimpleMailSender;
import ch.ivyteam.ivy.environment.Ivy;
import ch.ivyteam.ivy.project.IIvyProject;
import ch.ivyteam.ivy.project.IvyProjectUtil;
import ch.ivyteam.ivy.workflow.WorkflowNavigationUtil;
import ch.ivyteam.log.Logger;
import ch.soreco.ivybpmelements.util.Admin;
/**
* Class to send emails from java code.
*
*/
@SuppressWarnings("restriction")
public class Mail {
EmailConfiguration emailConfig;
Map<String, File> attachmentFiles;
public Mail
(String subject, String from, String replyTo,
String to, String cc, String bcc, String message,
Map<String, File> attachmentFiles) throws Exception {
this.emailConfig = new EmailConfiguration();
emailConfig.setSubject(subject);
emailConfig.setFrom(from);
emailConfig.setReplyTo(replyTo);
emailConfig.setTo(to);
emailConfig.setCC(cc);
emailConfig.setBCC(bcc);
emailConfig.setMessageContent(message);
this.attachmentFiles = attachmentFiles;
}
public Mail(EmailConfiguration emailConfig, Map<String, File> attachmentFiles) throws Exception {
send(emailConfig, attachmentFiles);
}
public void send() throws Exception {
send(emailConfig, attachmentFiles);
}
private void send(final EmailConfiguration emailConfig,
final Map<String, File> attachmentFiles) throws Exception {
(new Admin<Void>())
.execute(new Callable<Void>() {
@Override
public Void call() throws Exception {
IProject project = WorkflowNavigationUtil
.getWorkflowProcessModelVersion(
Ivy.request().getProcessModelVersion())
.getProject();
IIvyProject ivyProject = IvyProjectUtil
.getIvyProjectByName(project.getName());
EmailSetupConfiguration mailSetup = EmailSetupProviderUtil
.getEmailSenderConfiguration(ivyProject);
Logger runtimeLogger = Ivy.log();
SimpleMailSender mailSender = new SimpleMailSender(attachmentFiles,
emailConfig, runtimeLogger, mailSetup);
mailSender.sendMessage();
return null;
}
});
}
}
And to execute the code as system user.
import java.util.concurrent.Callable;
import ch.ivyteam.ivy.server.ServerFactory;
/**
* Class to execute code as the ivy system user.
*
* @param <T>
*/
public class Admin<T> {
/**
* Exeute code as system user.
* @param callable
* @return
* @throws Exception
*/
public T execute(Callable<T> callable) throws Exception {
return ServerFactory.getServer().getSecurityManager().executeAsSystem(callable);
}
}
answered
11.03.2015 at 16:07
HaraldWeber
(suspended)
accept rate:
33%