Trigger Mail service for admin login
Dear All,
I have configured Day CQ Mail service in my local like below.

Now I have written one servlet to get email and I am successfully getting email like below.

I have written below servlet.
************************** SendEmailAdminLoginServlet *******************************
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.Servlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.servlets.HttpConstants;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ai.contentadmin.core.service.SendEmailService;
@Component(service = Servlet.class, property = { Constants.SERVICE_DESCRIPTION + "=Custom Servlet",
"sling.servlet.methods=" + HttpConstants.METHOD_GET, "sling.servlet.paths=" + "/bin/sendemail" })
public class SendEmailAdminLoginServlet extends SlingAllMethodsServlet {
private static final long serialVersionUID = 1L;
private final Logger logger = LoggerFactory.getLogger(getClass());
@Reference
private SendEmailService sendEmailService;
@Override
protected void doGet(final SlingHttpServletRequest req, final SlingHttpServletResponse resp) throws IOException {
String emailTemplatePath = "/etc/workflow/notification/email/admin-login-email.txt";
// Set email template dynamic variables
Map<String, String> emailParams = new HashMap<String, String>();
emailParams.put("subject", "ADMIn Login AEM Send Email");
emailParams.put("message", "This is ADMIN Login Email!!!");
// Sender Email Address
emailParams.put("senderEmailAddress", "abc@gmail.com");
// Sender Email Name
emailParams.put("senderName", "Test User For Login");
// Sender Email Name
emailParams.put("recipientName", "Test User");
List<String> recipients = new ArrayList<>();
recipients.add("test@gmail.com");
logger.info("Recipients list :{}", recipients);
try {
sendEmailService.sendEmail(emailTemplatePath, recipients, emailParams);
} catch (LoginException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logger.error(">>>>>>>>>>> Email Sent <<<<<<<<<<<<< '{}'");
resp.setStatus(SlingHttpServletResponse.SC_OK);
resp.setContentType("application/json;charset=UTF-8");
resp.getWriter().print("{\"response message\" : \" Email Successfully Sent !!!\"}");
}
}
Now my requirement is that whenever some admin will login to the AEM environment then one email will be triggered with the date and time from the IP where we have logged in. Can you please help me here how can I achieve this ?