Aem cq mail service

arjuns71585267

13-12-2018

Was trying to send email using cq mail service by creating a test email component. I have created  a jsp for the same. But the component shows error on rendering

<%@include file="/libs/foundation/global.jsp"%>

<%@page import="com.adobe.acs.commons.email.EmailService,java.util.*"%><%

// Get the OSGi Email Service

EmailService emailService = sling.getService(EmailService.class);

// Specify the template file to use (this is an absolute path in the JCR)

String templatePath = "/etc/notification/email/default/emailTemplate.txt";

//Set the dynamic variables of your email template

Map<String, String> emailParams = new HashMap<String,String>();

emailParams.put("body","hello there");

//  Customize the sender email address - if required

emailParams.put("senderEmailAddress","abcd@example.com");

emailParams.put("senderName","David Smith");

// Array of email recipients

String[] recipients = { "s.arjun36@gmail.com"};

// emailService.sendEmail(..) returns a list of all the recipients that could not be sent the email

// An empty list indicates 100% success

List<String> failureList = emailService.sendEmail(templatePath, emailParams, recipients);

if (failureList.isEmpty()) {

out.println("Email sent successfully to the recipients");

} else {

out.println("Email sent failed");

}

%>

This is my code and the following is the error message I receive on rendering the component

Error during include of component '/apps/emailtest/text'

Error Message:

org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: Unable to compile class for JSP:  An error occurred at line: 19 in the generated java file Only a type can be imported. com.adobe.acs.commons.email.EmailService resolves to a package  An error occurred at line: 5 in the jsp file: /apps/emailtest/text/text.jsp EmailService cannot be resolved to a type 2:      <%@page import="com.adobe.acs.commons.email.EmailService,java.util.*"%><% 3: 4:      // Get the OSGi Email Service 5:      EmailService emailService = sling.getService(EmailService.class); 6: 7:      // Specify the template file to use (this is an absolute path in the JCR) 8:      String templatePath = "/etc/notification/email/default/emailTemplate.txt";   An error occurred at line: 5 in the jsp file: /apps/emailtest/text/text.jsp EmailService cannot be resolved to a type 2:      <%@page import="com.adobe.acs.commons.email.EmailService,java.util.*"%><% 3: 4:      // Get the OSGi Email Service 5:      EmailService emailService = sling.getService(EmailService.class); 6: 7:      // Specify the template file to use (this is an absolute path in the JCR) 8:      String templatePath = "/etc/notification/email/default/emailTemplate.txt";

Could anyone please help me out for this? Thanks in advance.

Replies

Highlighted

Arun_Patidar

MVP

13-12-2018

Do you have ACS Common package/dependancy in place?

<!-- https://mvnrepository.com/artifact/com.adobe.acs/acs-aem-commons-bundle -->

<dependency>

    <groupId>com.adobe.acs</groupId>

    <artifactId>acs-aem-commons-bundle</artifactId>

    <version>2.1.0</version>

</dependency>

Highlighted

smacdonald2008

13-12-2018

Java code:

MessageGateway<Email> messageGateway;

             

        //Set up the Email message

        Email email = new SimpleEmail();

             

        //Set the mail values

        String emailToRecipients = "scottm@adobe.com";

        String emailCcRecipients = "ratna1.kumar@gmail.com";

         

        email.addTo(emailToRecipients);

        email.addCc(emailCcRecipients);

        email.setSubject("AEM Custom Step");

        email.setFrom("scottm@adobe.com");

        email.setMsg("This message is to inform you that the AEM content has been deleted");

         

        //Inject a MessageGateway Service and send the message

        messageGateway = messageGatewayService.getGateway(Email.class);

     

        // Check the logs to see that messageGateway is not null

        messageGateway.send((Email) email);

Highlighted

Feike_Visser1

Employee

14-12-2018

the error indicates that the class can't found. Either the code is not deployed, or the bundle is not active.

can you check at /system/console/services whether the service is available?

Highlighted

smacdonald2008

14-12-2018

I find the MessageGatewayService API very reliable to use and do not see issues when using it.

Feike is correct - in your example - the error means that com.adobe.acs.commons.email.EmailService is not found. Ensure that this bundle is in active state.

Or write your own bundle using the API I referred to.

Highlighted

Arun_Patidar

MVP

30-11-2019

I believe you can get bounceback mail information from SMTP server.

for example, google SMTP server provides feeds for a bounce-back and other kinds of emails.