Add Hyperlink to the email send out by Script Listener

kukabgd February 17, 2021

Hi everyone,

I have created script listener with ScriptRunner that iterates through all subtasks and their linked issues, and then the email is send out with the results.

Everything works great but I would like to know how to create a hyperlink in email body, since 

sendEmail("test@company.com", "Testing", emailBody)

is giving only string back. The reason I want to do this is that the link is really long, and it doesn't look nice. So is there a way to enter HTML tag to the email body? or any other way to insert hyperlink.

Here is the code I'm using:

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.link.IssueLink;
import java.text.SimpleDateFormat;
import com.atlassian.jira.mail.Email
import com.atlassian.mail.server.SMTPMailServer


IssueManager issueManager = ComponentAccessor.getIssueManager();
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def issue = event.getIssue()
String emailBody
def activityField = ComponentAccessor.customFieldManager.getCustomFieldObject("customfield_13001");
def findingsLinkField = ComponentAccessor.customFieldManager.getCustomFieldObject("customfield_18601");

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();

// Gets all subtasks of the projects.
final Collection < Issue > subTaskObjects = issue.getSubTaskObjects();
if(subTaskObjects != null && subTaskObjects.size() != 0)
{
for (Issue subTaskObject : subTaskObjects)
{
if(subTaskObject.issueType.name == "Test Review")
{
if(subTaskObject != null)
{
// Gets all linked issues of the subtasks
final List <IssueLink> issuelinks = issueLinkManager.getInwardLinks(subTaskObject.getId());
if(issuelinks != null && issuelinks.size() != 0)
{
for (IssueLink issueLink : issuelinks)
{
def mutablelink = issueManager.getIssueObject(issueLink.getSourceId())
if (issueLink.getIssueLinkType().name == "Test finding" && issueLink != null && mutablelink.status.name == "open")
{
def activity = mutablelink.getCustomFieldValue(activityField);
def findingsLink = mutablelink.getCustomFieldValue(findingsLinkField);

// I would like to add this link to hyper link
def url = "mailto:test@company.com?subject=Test%20Project%20Finding:%20Comment%20from%20Responsible%20("+ mutablelink.key +")&body=Please%20send%20a%20short%20status%20update%20for%20this%20Test%20Review%20Finding%20to%20the%20already%20entered%20recipient.%20A%20comment%20to%20the%20Finding%20will%20be%20added%20automatically%20in%20Q-Tool%20where%20the%20responsible%20QE-CS%20will%20react%20accordingly.%0D%0A"
URL obj = new URL(url)

emailBody = emailBody + "Finding: ${mutablelink.key}<br> activityField: ${activity} \n " + "Url: ${obj} "



}
}
}
}
}
}

}

def sendEmail(String emailAddr, String subject, String body) {
SMTPMailServer mailServer = ComponentAccessor.getMailServerManager().getDefaultSMTPMailServer()
if (mailServer)
{
Email email = new Email(emailAddr)
email.setSubject(subject)
email.setBody(body)
mailServer.send(email)
log.debug("Mail sent")
} else {
log.warn("Please make sure that a valid mailServer is configured")
}
}
sendEmail("test@company.com", "Testing", emailBody)

 

1 answer

1 accepted

1 vote
Answer accepted
Danyal Iqbal
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 17, 2021

use

email.setMimeType("text/html")

and then add the html hyperlink in the body.

kukabgd February 21, 2021

worked like a charm :) thanks 

Suggest an answer

Log in or Sign up to answer