From f2d5f9931478f4b3c728efd6cd54a240c62b1438 Mon Sep 17 00:00:00 2001 From: Ram-20062003 Date: Thu, 9 Mar 2023 23:12:36 +0530 Subject: [PATCH] update : add template email for sendgrid --- .../server/sendgrid/SendGridService.kt | 283 ++++++++++++++++-- 1 file changed, 264 insertions(+), 19 deletions(-) diff --git a/server/src/main/kotlin/delta/codecharacter/server/sendgrid/SendGridService.kt b/server/src/main/kotlin/delta/codecharacter/server/sendgrid/SendGridService.kt index b29eae27..0ec4c9eb 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/sendgrid/SendGridService.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/sendgrid/SendGridService.kt @@ -5,6 +5,7 @@ import com.sendgrid.Request import com.sendgrid.Response import com.sendgrid.SendGrid import com.sendgrid.helpers.mail.Mail +import com.sendgrid.helpers.mail.objects.Content import com.sendgrid.helpers.mail.objects.Email import delta.codecharacter.server.exception.CustomException import org.slf4j.Logger @@ -22,28 +23,33 @@ class SendGridService { @Autowired private lateinit var sendGrid: SendGrid - @Value("\${spring.sendgrid.template-id}") private lateinit var templateId: String - @Value("\${spring.sendgrid.sender-email}") private lateinit var senderEmail: String + // @Value("\${spring.sendgrid.template-id}") private lateinit var templateId: String @Value("\${base-url}") private lateinit var baseUrl: String fun activateUserEmail(userId: UUID, token: String, name: String, email: String) { val link = "$baseUrl#/activate?id=$userId&token=$token" - val linkName = "User Activation link" - val message = "Please click the button to activate your account" + val linkName = "User Activation" + val message = "You are just one step away from activating your CodeCharacter account" + val disregardMessage = "If you did not create an account with us,please disregard this email" val buttonName = "Activate" val subjectInfo = "CodeCharacter Account Activation Link" - sendTemplateEmail(email, name, linkName, link, message, buttonName, subjectInfo) + sendTemplateEmail( + email, name, linkName, link, message, disregardMessage, buttonName, subjectInfo + ) } fun resetPasswordEmail(userId: UUID, token: String, name: String, email: String) { val link = "$baseUrl#/reset-password?id=$userId&token=$token" val linkName = "Reset-Password link" val message = "Please click the button to reset your password" + val disregardMessage = "If you did not request a password reset,please ignore this email." val buttonName = "Reset Password" val subjectInfo = "CodeCharacter Reset-Password Link" - sendTemplateEmail(email, name, linkName, link, message, buttonName, subjectInfo) + sendTemplateEmail( + email, name, linkName, link, message, disregardMessage, buttonName, subjectInfo + ) } fun sendTemplateEmail( @@ -52,22 +58,261 @@ class SendGridService { linkName: String, link: String, message: String, + disregardMessage: String, buttonName: String, subjectInfo: String ) { - val mail = Mail() - val personalization = DynamicTemplatePersonalization() - personalization.addTo(Email(emailTo)) - mail.setFrom(Email(senderEmail)) - mail.setSubject(subjectInfo) - personalization.addDynamicTemplateData("name", name) - personalization.addDynamicTemplateData("link_name", linkName) - personalization.addDynamicTemplateData("message", message) - personalization.addDynamicTemplateData("link", link) - personalization.addDynamicTemplateData("button_name", buttonName) - personalization.addDynamicTemplateData("subject", subjectInfo) - mail.addPersonalization(personalization) - mail.setTemplateId(templateId) + // Using DynamicTemplates are preferred but we dont have creds to access that so we used this :( + // val mail = Mail() + // val personalization = DynamicTemplatePersonalization() + // personalization.addTo(Email(emailTo)) + // mail.setFrom(Email(senderEmail)) + // mail.setSubject(subjectInfo) + // personalization.addDynamicTemplateData("name", name) + // personalization.addDynamicTemplateData("link_name", linkName) + // personalization.addDynamicTemplateData("message", message) + // personalization.addDynamicTemplateData("link", link) + // personalization.addDynamicTemplateData("button_name", buttonName) + // personalization.addDynamicTemplateData("subject", subjectInfo) + // mail.addPersonalization(personalization) + // mail.setTemplateId(templateId) + val emailContent = + "\n" + + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + "
\n" + + "

\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
Email not displaying correctly? VIEW IT in your browser.
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
$linkName
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
Hi $name,
\n" + + "

\n" + + "
$message,
\n" + + "

\n" + + "
$disregardMessage
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " $buttonName\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
With Regards!
\n" + + "
CodeCharacter
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
CodeCharatcer-2023
\n" + + " \n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + + " \n" + + " " + val content = Content("text/html", emailContent) + val mail = Mail(Email(senderEmail), subjectInfo, Email(emailTo), content) val request = Request() try { request.apply {