I’m trying to implement an email notification system in Jira using Script Runner. I want to automatically send emails to external users when their emails result in new tickets in the system. The email addresses are included in the ticket descriptions.
Successful Script in Console
This version of the script works well when executed in the Script Runner console:
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.mail.Email
import com.atlassian.mail.server.MailServerManager
import com.atlassian.mail.server.SMTPMailServer
ComponentManager manager = ComponentManager.getInstance()
MailServerManager mailManager = manager.getMailServerManager()
SMTPMailServer smtpServer = mailManager.getDefaultSMTPMailServer()
if (smtpServer) {
IssueManager issueManager = manager.getIssueManager()
Issue issue = issueManager.getIssueObject("TASK-456")
def getEmail = {
(((it.split("\\[Email from:")[1]).split("<")[1]).split(">")[0])
}
String senderEmail = getEmail("${issue.description}")
Email email = new Email(senderEmail)
email.setSubject("New Ticket Created: ${issue.summary}")
String bodyContent = "We have received your request: ${issue.description}"
email.setBody(bodyContent)
smtpServer.send(email)
}
Failing Version in Post Function
However, when I try to use it as a post function on the CREATE transition, it doesn’t work:
import com.atlassian.jira.ComponentManager
import com.atlassian.mail.Email
import com.atlassian.mail.server.MailServerManager
import com.atlassian.mail.server.SMTPMailServer
ComponentManager manager = ComponentManager.getInstance()
MailServerManager mailManager = manager.getMailServerManager()
SMTPMailServer smtpServer = mailManager.getDefaultSMTPMailServer()
if (smtpServer) {
def getEmail = {
(((it.split("\\[Email from:")[1]).split("<")[1]).split(">")[0])
}
String senderEmail = getEmail("${issue.description}")
Email email = new Email(senderEmail)
email.setSubject("New Ticket Created: ${issue.summary}")
String bodyContent = "We have received your request: ${issue.description}"
email.setBody(bodyContent)
smtpServer.send(email)
}
I thought that the issue object would be accessible automatically in post functions, similar to examples I’ve read. Can anyone help me understand what I might be missing? I would also appreciate any debugging suggestions.