How to send email using the email address that is in the custom field?
Asked by Emanuel Paquetelima:

Hello All,

I have a custom field(RequerterEmail) in the issue.  
I created this field because many of these users are external, they don't have access to my company's jira. They are external customers. That's why I didn't use the userpicker field.  
Therefore, I would like to send email to them whenever the request for this was created and closed.  
I can't get the field value (RequerterEmail) and send the email.  
My code is this:  
Can anyone help me?

import com.atlassian.jira.component.ComponentAccessor  
import com.atlassian.jira.issue.MutableIssue  
import com.atlassian.jira.mail.Email  
import com.atlassian.jira.mail.settings.MailSettings  
import com.atlassian.mail.MailException  
import com.atlassian.mail.server.SMTPMailServer  
import com.atlassian.plugin.util.ContextClassLoaderSwitchingUtil  
import org.apache.log4j.Level  
import org.apache.log4j.Logger  
import com.atlassian.jira.issue.CustomFieldManager  
import com.atlassian.jira.issue.Issue  
import com.atlassian.jira.issue.fields.CustomField

String sendEmail(String emailAddr, String subject, String body) {  
def logger = Logger.getLogger(getClass())  
logger.setLevel(Level.DEBUG)

// Stop emails being sent if the outgoing mail server gets disabled (useful if you start a script sending emails and need to stop it)  
def mailSettings = ComponentAccessor.getComponent(MailSettings)  
if (mailSettings?.send()?.disabled) {  
return 'Your outgoing mail server has been disabled'  
}

def mailServer = ComponentAccessor.mailServerManager.defaultSMTPMailServer  
if (!mailServer) {  
logger.debug('Your mail server Object is Null, make sure to set the SMTP Mail Server Settings Correctly on your Server')  
return 'Failed to Send Mail. No SMTP Mail Server Defined'  
}

def email = new Email(emailAddr)  
email.setMimeType('text/html')  
email.setSubject(subject)  
email.setBody(body)  
try {  
// This is needed to avoid the exception about IMAPProvider  
ContextClassLoaderSwitchingUtil.runInContext(SMTPMailServer.classLoader) {  
mailServer.send(email)  
}  
logger.debug('Mail sent')  
'Success'  
} catch (MailException e) {  
logger.debug("Send mail failed with error: ${e.message}")  
'Failed to Send Mail, Check Logs for error'  
}  
}  
//sendEmail('user@email.com', '\<Your subject here\>', '\<Your body here\>')  
def RequesterEmail = 12601 as Long  
//def issue = issue as MutableIssue

<br />

def customFieldManager = ComponentAccessor.getCustomFieldManager()  
def UserEmailCustomField = CustomFieldManager.getCustomFieldObject(RequesterEmail)  
def UserEmailValue = issue.getCustomFieldValue(UserEmailCustomField)  
//def user_semail = com.atlassian.jira.component.ComponentAccessor.getCustomFieldValue(12601)

//return(UserEmailValue)


Answers:
author: Emanuel Paquetelima
body: Hello Ravi,

In fact, the example you sent me works. But as I understand very little code, I'm having difficulty implementing this code for my case.  
Can you help me?

Thank you in advance

BR


author: Ravi Sagar _Sparxsys_
body: Hi [@Emanuel Paquetelima](/t5/user/viewprofilepage/user-id/2855538)

Were you able to send an email when you hard code the email address? It would be a good idea to try that first.

What is the type of your custom field?

Ravi

comments: author: Emanuel Paquetelima
body: Hi Ravi,

How are you?

I usually see your videos  
No, I couldn't.  
I'm using a Text Field(single line).  
In reality my code is not doing anything.

Can you help me with this?


author: Ravi Sagar _Sparxsys_
body: Hello [@Emanuel Paquetelima](/t5/user/viewprofilepage/user-id/2855538)

Thanks.

So what you can do is to make sure that email is being sent. You can find a simple working example [here](https://github.com/sparxsys/ScriptRunner-Scripts/blob/master/jira_server/sendEmail.groovy).

Once that works then fetch the custom field value (if it is filled in) and use that in your code.

Ravi


author: Emanuel Paquetelima
body: [@Ravi Sagar _Sparxsys_](/t5/user/viewprofilepage/user-id/853596)

Hello Ravi,

In fact, the example you sent me works. But as I understand very little code, I'm having difficulty implementing this code for my case.  
Can you help me?

Thank you in advance

BR


Tags: confluence-server

jira

server