Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Aem cq mail service

arjuns71585267
Level 4
Level 4

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.

9 Replies
Arun_Patidar
Community Advisor
Community Advisor

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>

arjuns71585267
Level 4
Level 4

I didn't build it using maven. just configured the day.cq.mail service

Feike_Visser1
Employee
Employee

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?

arjuns71585267
Level 4
Level 4

I cannot find the service under the services. Attaching the screenshot for your reference.

1648512_pastedImage_0.png

smacdonald2008
Level 10
Level 10

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.

smacdonald2008
Level 10
Level 10

Write a custom Service that uses the MessageGatewayService. Its quite easy to use. See this article where we use it within a workflow step -

Adobe Experience Manager Help | Creating an Adobe Experience Manager 6.4 custom workflow step that u...

smacdonald2008
Level 10
Level 10

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);

Arun_Patidar
Community Advisor
Community Advisor

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.