我们在Jira有一个项目,我们用它作为电子邮件的收件箱.并非所有发送电子邮件的人都是JIRA中的用户(并且他们不会).不过,我们想通知收到电子邮件.电子邮件地址是问题描述的一部分.
我知道一些插件,但不是替换Mailhandlers,我正在尝试为JIRA编写一个groovy脚本,以适应此代码,我想在工作流的CREATE转换中发布到Post函数中.
当我抓住现有的Test-Issue并在控制台中运行脚本时,以下代码可以正常工作:
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 componentManager = ComponentManager.getInstance()
MailServerManager mailServerManager = componentManager.getMailServerManager()
SMTPMailServer mailServer = mailServerManager.getDefaultSMTPMailServer()
if (mailServer) {
if (true) {
IssueManager issueManager = componentManager.getIssueManager()
Issue issue = issueManager.getIssueObject("IN-376")
def grabEmail = {
(((it.split( "\\[Created via e-mail received from:")[1]).split("<")[1]).split(">")[0])
}
String senderAddress = grabEmail("${issue.description}")
Email email = new Email(senderAddress)
email.setSubject("JIRA Ticket erstellt: ${issue.summary}")
String content = "Content ----> by Issue2 ${issue.description}"
email.setBody(content)
mailServer.send(email)
}
}
Run Code Online (Sandbox Code Playgroud)
唉,它不会像这样在Post函数中运行: …
我在 Grails 中使用 Groovy Sql 和命名参数来从 Postgres DB 获取结果。我的语句是动态生成的,即连接起来成为最终语句,随着我的进行,参数被添加到映射中。
sqlWhere += " AND bar = :namedParam1"
paramsMap.namedParam1 = "blah"
Run Code Online (Sandbox Code Playgroud)
为了便于阅读,我使用了 groovy 字符串语法,它允许我在多行上编写 sql 语句,如下所示:
sql = """
SELECT *
FROM foo
WHERE 1=1
${sqlWhere}
"""
Run Code Online (Sandbox Code Playgroud)
该表达式被计算为包含换行符为 \n 的字符串:
SELECT *\n ...
Run Code Online (Sandbox Code Playgroud)
当我像这样传递参数时这不是问题
results = sql.rows(sqlString, paramsMap)
Run Code Online (Sandbox Code Playgroud)
但如果 paramsMap 为空,它就会变成 1(这种情况会发生,因为AND bar = :namedParam1并不总是连接到查询中)。然后我得到一个错误
org.postgresql.util.PSQLException: No hstore extension installed
Run Code Online (Sandbox Code Playgroud)
这似乎与问题的本质无关。我现在已经用 if...else 解决了这个问题
if (sqlQuery.params.size() > 0) {
results = sql.rows(sqlString, paramsMap)
} else {
results = sql.rows(sqlString.replace('\n',' '))
} …Run Code Online (Sandbox Code Playgroud)