Hi ,
Can anyone please help me what's wrong in my email sending code.
Node templateNode = adminSession.getNode("/etc/workflow/notification/email/demo/choosesite.txt"); log.info("admin session:: "+adminSession+".."+templateNode); final Map<String, String> parameters = new HashMap<String, String>(); parameters.put("title", "page activation"); parameters.put("name", "chamu"); parameters.put("id", "chamu@gmail.com"); parameters.put("prefix", "localhost"); parameters.put("path", "/content/demo/test.html"); */ final MailTemplate mailTemplate = MailTemplate.create(templateNode.getPath(),templateNode.getSession()); HtmlEmail email = mailTemplate.getEmail(StrLookup.mapLookup(parameters),HtmlEmail.class); email.addTo("chamu0001@gmail.com"); //email.addTo(new ArrayList<>()); MessageGateway<HtmlEmail> messageGateway = this.messageGatewayService.getGateway(HtmlEmail.class); messageGateway.send(email);
it's always throwing below error .
Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "com.day.cq.commons.mail.MailTemplate.getEmail(Lorg/apache/commons/lang/text/StrLookup;Ljava/lang/Class;)Lorg/apache/commons/mail/Email;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, com/demo/aem/workflow/exec/RBSpawnSubWorkflowsProcess, and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) for resolved class, com/day/cq/commons/mail/MailTemplate, have different Class objects for the type s/lang/text/StrLookup;Ljava/lang/Class;)Lorg/apache/commons/mail/Email; used in the signature
Views
Replies
Total Likes
Are you following an online doc? If so - can you reference it so community can see if that is reproducible.
We have a MessageGateWay article - but that is part of a custom workflow step.
http://helpx.adobe.com/experience-manager/using/creating-custom-aem-workflow-steps.html
It does not use the email template as is shown here.
Views
Replies
Total Likes
try restarting bundles, i had faced issues and it was due to resolution dependency issues. restarting components/ respective bundles resolved issue.
Views
Replies
Total Likes
Hi,
You can see the below servlet code. we are hitting the below servlet through action="/bin/hello" and from that servlet we are sending the email ,we are able to get the email also.
Maven dependency:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.1</version>
</dependency>
and if your system pointing port no 465 of smtp.gmail.com ,use this code
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.ssl.enable", "true");
// props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "465");
or else if your system pointing port no 587 of smtp.gmail.com ,use this code
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
servlet code :
@SlingServlet(paths = "/bin/hello", methods = "{GET, POST}")
public class MailTest extends SlingAllMethodsServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(SlingHttpServletRequest request,
SlingHttpServletResponse response) throws ServletException,
IOException {
try {
final String from = "aemwebsiteenquiryform@gmail.com";
final String password = "123";
String email = request.getParameter("email");
String query = request.getParameter("query");
System.out.println(email + "--" + query);
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from, password);
}
});
Message nameOfStationMessages = new MimeMessage(session);
nameOfStationMessages.setFrom(new InternetAddress(from));
nameOfStationMessages.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(email));
nameOfStationMessages.setText("Suggestion/Query: " + query);
Transport.send(nameOfStationMessages);
System.out.println("hello");
response.sendRedirect("/content/transport/fr.html");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Views
Replies
Total Likes
I am facing the same issue, Can you share the solution for this error?
Views
Replies
Total Likes
I tried in 6.4 with same code shared in original post,It working for me without any issue. below is the code :
aem63app-repo/SimpleEmailServlet.java at master · arunpatidar02/aem63app-repo · GitHub
Views
Replies
Total Likes
Hi @arunpatidar,
I've tried your code sample in my local AEM 6.4 instance. Unfortunately I'm getting an error in that line:
HtmlEmail email = mailTemplate.getEmail(StrLookup.mapLookup(parameters), HtmlEmail.class);
Here's the excerpt from the error stack trace
org.apache.commons.mail.EmailException: Invalid message supplied
at org.apache.commons.mail.HtmlEmail.setMsg(HtmlEmail.java:177) [org.apache.commons.email:1.5.0]
at com.day.cq.commons.mail.MailTemplate.getEmail(MailTemplate.java:179) [com.day.cq.cq-commons:5.11.18]
Any idea what could cause that error?
Should it work in local in first place?
Views
Replies
Total Likes
Hi,
It does work in 6.4
https://aemlab.blogspot.com/2019/06/aem-custom-templated-email.html
Could you please check email template?
Views
Replies
Total Likes
Thanks arunpatidar26. That was helpful
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies