Hi everyone,
I'm new to Adobe Campaign Manager and I'm trying to use dynamic date in the email subject and email body. By dynamic date I meant is - days in month followed by month name - i.e. 30 September, 31 October and so on. Also, needs to consider February as a special case. Can anyone please tell me how I can do this in the email template? I can create HTML file and use javascript within the HTML but I'm not sure whether it is permissible to use such HTML as email delivery HTML in ACM. Also, what can be done for subject line with such dynamic date ?
Your help and guidance will really help me.
Solved! Go to Solution.
Views
Replies
Total Likes
Another implementation way
<%
function daysInMonth(today) {
return new Date(today.getFullYear(), today.getMonth(), 0).getDate();
}
var today = new Date();
%>
<%= daysInMonth(today) %> <%= formatDate (today, "%Bl") %>
Views
Replies
Total Likes
Thank you for your reply. How to use format date for dynamic month in subject? Also, how to fetch number of days in a particular month and current month as dynamic one in the email body?
Views
Replies
Total Likes
Hi @vinay049
You can try the following.
It works for me.
Subject: welcome email - <%= formatDate(new Date(), "%Bl") %>
Body: <%= formatDate(new Date(), "%2D %Bl %4Y") %>
Cheers,
Deb
Thank you for your reply, Deb.
For subject line - this will work.
For body - let me clarify what I'm trying to do. I want to display max number of days in the current month, current month name and current year. For example, 30 September, 31 October, 30 November and so on. February - it will be trickier month. I'm trying to figure out how to do this.
Views
Replies
Total Likes
Hi vinay049,
You'll want to use formatDate and getCurrentDate. Specs are at https://docs.adobe.com/content/help/en/campaign-classic/technicalresources/api/f-formatDate.html and https://docs.adobe.com/content/help/en/campaign-classic/technicalresources/api/f-getCurrentDate.html
The specific syntax would be:
<%=formatDate(getCurrentDate(),"%2D %Bl")%>
Views
Replies
Total Likes
Hi Anthony,
Tank you so much for your reply and suggestion.
I think I need to clarify the question. I want to do 2 things:
1. I want to display current month name in the email subject For example, welcome email - September
2. I want to display number of days in the current month, month name and year in the email body. For example, 30 September 2021.
This should be dynamic. I'm trying to figure out how to do this in ACM - Email Delivery - HTML file for email body and email subject within the Email Delivery option.
Can you able to help me out please ?
Views
Replies
Total Likes
In your subject line, use the code provided. Example:
Subject Line: Daily Newsletter - <%=formatDate(getCurrentDate(),"%2D %Bl %4Y")%>
When you test, you'll see the subject line will say:
"Daily Newsletter - 23 September 2021"
Thank you for your reply, Anthony.
For subject line - this will work.
For body - let me clarify what I'm trying to do. I want to display max number of days in the current month, current month name and current year. For example, 30 September, 31 October, 30 November and so on. February - it will be trickier month. I'm trying to figure out how to do this.
Do you have any idea for this?
Views
Replies
Total Likes
Try this. It will get the "0th" day of the month, which is really the last day of the prior month.
<% var d = new Date() var m = d.getMonth() var y = d.getFullYear() var lastDate = new Date(y, m + 1, 0); var dateString = formatDate(lastDate,"%2D %Bl %4Y") document.write(dateString) %>
Hi Anthony,
I have tried to use the code but I don't receive test emails at all after using it. I have used the code in the email body HTML as suggested above. Do I need to put this somewhere else? also, do I need to add any syntax?
For example,
I have used this snippet like - <div> This is test snippet and you need to complete this test by <% var d = new Date() var m = d.getMonth() var y = d.getFullYear() var lastDate = new Date(y, m + 1, 0); var dateString = formatDate(lastDate,"%2D %Bl %4Y") document.write(dateString) %> </div>
But I'm not getting any test emails and there isn't any error when I click on Analyze delivery in ACM.
Can you please help ?
Views
Replies
Total Likes
I tested the code and got "30 September 2021"
Can you remove the code and confirm you receive the email? Then add the code back and confirm the code is the cause of the issue.
Also, make sure the code is not on a single line. Each line of code must be on a separate line. Otherwise, use this:
<% var d = new Date(); var m = d.getMonth(); var y = d.getFullYear(); var lastDate = new Date(y, m + 1, 0); var dateString = formatDate(lastDate,"%2D %Bl %4Y"); document.write(dateString) %>
The semi-colons will allow it to run as a single line.
Views
Replies
Total Likes
Yes, I have followed the steps mentioned by you.
Used ";" in between, but it didn't work.
Removed that snippet and sent test email, Got email.
But when I put that snippet in, not able to receive the email.
I have used something like this
<div>This is test email and needs to be done by <% var d = new Date(); var m = d.getMonth(); var y = d.getFullYear(); var lastDate = new Date(y, m + 1, 0); var dateString = formatDate(lastDate,"%2D %Bl %4Y"); document.write(dateString) %></div>
Views
Replies
Total Likes
I just tried this and it previews correctly:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> </HEAD> <BODY> <DIV>This is test email and needs to be done by <% var d = new Date(); var m = d.getMonth(); var y = d.getFullYear(); var lastDate = new Date(y, m + 1, 0); var dateString = formatDate(lastDate,"%2D %Bl %4Y"); %>: <%=dateString%> Please see to it!</DIV></BODY></HTML>
I'm not sure what's the issue.
I have removed the entire email.
And created simple HTML using the code given above. I didn't receive the test email. Is there any configuration related issue in MS Outlook for receiving email written with JS or configuration issue in ACM or anyother issue?
Because without that snippet, I can send and receive all the emails. Subject snippet did work but issue is with only this snippet.
Also, note that I can use dynamic first name in the body by Hi <%= recipient.firstName %> but I think only this date one isn't work. I'm not able to understand the issue.
Views
Replies
Total Likes
Another implementation way
<%
function daysInMonth(today) {
return new Date(today.getFullYear(), today.getMonth(), 0).getDate();
}
var today = new Date();
%>
<%= daysInMonth(today) %> <%= formatDate (today, "%Bl") %>
Thank you for suggestion Lauren. I will try this way today and let you know whether that worked or not.
Views
Replies
Total Likes
Thank you so much, this snippet worked for me.
Views
Replies
Total Likes
Hi Laurent,
I need one more help. Your answer did work. If I want to have month name in French in subject as well as email body. Do you know how to do that?
Views
Replies
Total Likes
Another implementation way - just corrected snippet for month. Found that in JS, month is 0-based so it was creating the issue.
<%
function daysInMonth(today) {
return new Date(today.getFullYear(), today.getMonth()+1, 0).getDate();
}
var today = new Date();
%>
<%= daysInMonth(today) %> <%= formatDate (today, "%Bl") %>
Can you help with translation part?
Views
Replies
Total Likes
there are different methods for that, but my prefered one is to create an array in JS:
var monthFr:["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre","Novembre","Décembre"];
logInfo("Actual French Month: " + monthFr[today.getMonth()] );
ps: this is because "today" as already get declared in the past example
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies