Sending Email from external server based on Jira Events

Hello Experts,
I have a use case to hit a particular api ( Consider this is like a mail server here i have pre - defined email templates ) when a jira event occurs . I have already configured some trigger conditions in forge app and stored it in storage . here the email recepient is a jira user . so i used /users/search api to get all the users . in this api Im getting emailAddress that is masked with atlassian proxy . so the email cannot be sent . how can i get the actual email address of the users

FYI this app will be only visible on Jira admins . No one can configure trigger in this app

Resolver :

resolver.define('getAllJiraUsers', async () => {
  try {
    const response = await api.asApp().requestJira(route`/rest/api/3/users/search`, {
      headers: {
        'Accept': 'application/json'
      }
    });
    const users = await response.json();
    return users
      .filter(user => user.emailAddress)
      .map(user => ({
        label: user.displayName,
        value: user.emailAddress
      }));
  } catch (error) {
    console.error('Error fetching Jira users:', error);
    throw error;
  }
});

Event Handler function

// src/eventHandler.js
import api, { route, storage } from '@forge/api';
import axios from 'axios';
const handleEvent = async (req, type) => {
  try {
    const triggers = await storage.get('Trigger') || [];
    let isConfigured = null;
    if (!triggers || triggers.length === 0) {
      console.log('No triggers found');
      return {
        success: false,
        message: 'No Triggers Found'
      };
    }
    for (const trigger of triggers) {
      if (!trigger.events) continue;
      const matchedEvent = await Promise.resolve(trigger.events.find((event) => {
        console.log('event', event);
        console.log('type', type);
        return event.value.toLowerCase() === type.toLowerCase();
      }));
      if (matchedEvent) {
        isConfigured = trigger;
        break;
      }
    }
    console.log('isConfigured', isConfigured);
    if (isConfigured) {
      const token = await storage.get('Token');
      if (!token) {
        return {
          success: false,
          message: 'Authentication token not found'
        };
      }
      const baseConfig = {
        method: 'put',
        maxBodyLength: Infinity,
        url: `https://api.surveysparrow.com/v3/channels/${isConfigured.shareChannel.value}`,
        body: JSON.stringify(isConfigured.shareRecipient),
        headers: {
          'Authorization': token,
          'Content-Type': 'application/json'
        }
      };
      const shareData = {
        survey_id: isConfigured.survey.value,
      }
      const config = {
        ...baseConfig,
        data: JSON.stringify(shareData)
      };
      const response = await axios.request(config);
      console.log(response, "response");
      return {
        success: true,
        message: 'Survey Shared Successfully',
      };
    }
    else {
      return {
        success: false,
        message: 'No Matching Trigger Found'
      };
    }
  } catch (error) {
    console.error('Trigger Event Error', error);
    throw error;
  }
}
export async function handler(event, context) {
  const { eventType, issue } = event;
  switch (eventType) {
    case 'avi:jira:created:issue':
      const response = await handleEvent(event, "issue_created");
      return response;
    case 'avi:jira:updated:issue':
      return await handleEvent(event, "issue_updated");
    case 'avi:jira:deleted:issue':
      return await handleEvent(event, "issue_deleted");
    case 'avi:jira:created:task':
      return await handleEvent(event, "task_created"  );
    case 'avi:jira:updated:task':
      return await handleEvent(event, "task_updated");
    case 'avi:jira:created:story':
      return await handleEvent(event, "story_created" );
    case 'avi:jira:updated:story':
      return await handleEvent(event, "story_updated");
    case 'avi:jira:deleted:story':
      return await handleEvent(event, "story_deleted");
    case 'avi:jira:created:epic':
      return await handleEvent(event, "epic_created");
    case 'avi:jira:updated:epic':
      return await handleEvent(event, "epic_updated");
    case 'avi:jira:deleted:epic':
      return await handleEvent(event, "epic_deleted");
    default:
      console.log(`Unhandled event type: ${type}`);
  }
}

Can anyone please help on this case . Thanks in advance :pray:

FYI adding my sample Trigger configurations here

[
  {
    "isEnabled": true,
    "survey": {
      "label": "Jira Integration Test",
      "value": 1000141262
    },
    "shareChannel": {
      "label": "Breaking Bad",
      "type": "EMAIL",
      "value": 1000546665
    },
    "shareRecipient": [
      {
        "label": "Heisenberg",
        "value": "3d741792-2171-4e20-acb3-f0e9457b729a@connect.atlassian.com"
      }
    ],
    "id": "id-1733914881949-auckm0u6t",
    "conditions": {
      "all": [
        {
          "field": null,
          "value": null,
          "operator": null
        }
      ],
      "any": [
        {
          "field": null,
          "value": null,
          "operator": null
        }
      ],
      "operator": null
    },
    "shareType": {
      "label": "Email",
      "value": "EMAIL"
    },
    "jiraProject": {
      "label": "Jira Integration Test",
      "value": "SCRUM"
    },
    "events": [
      {
        "label": "Issue Created",
        "value": "Issue_created"
      }
    ]
  }
]

Hi!
Please, have a look at this post: