Skip to content

Instantly share code, notes, and snippets.

@jverweijL
Last active January 11, 2022 16:56
Show Gist options
  • Save jverweijL/75367c93daae217274ee47ebcca0da51 to your computer and use it in GitHub Desktop.
Save jverweijL/75367c93daae217274ee47ebcca0da51 to your computer and use it in GitHub Desktop.
Simple example to sent emails using Liferay DXP with Freemarker template

The line TemplateResource templateResource = new URLTemplateResource("0",this.getClass().getClassLoader().getResource("personal_alert.ftl")); will load the template from src/main/resources

package com.liferay.alerter;

import java.io.StringWriter;

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;

import com.liferay.asset.kernel.model.AssetEntry;
import com.liferay.mail.kernel.model.MailMessage;
import com.liferay.mail.kernel.service.MailServiceUtil;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.template.Template;
import com.liferay.portal.kernel.template.TemplateConstants;
import com.liferay.portal.kernel.template.TemplateException;
import com.liferay.portal.kernel.template.TemplateManagerUtil;
import com.liferay.portal.kernel.template.TemplateResource;
import com.liferay.portal.kernel.template.URLTemplateResource;

public class Mailer {

	public void sentMail(User user, AssetEntry entry) {
		String body = "";		

		try {
			TemplateResource templateResource = 
				new URLTemplateResource("0",this.getClass().getClassLoader().getResource("message.ftl"));
			Template template = TemplateManagerUtil.getTemplate(
			TemplateConstants.LANG_TYPE_FTL, templateResource, false);
			
			// Add the data-models
	        	template.put("user", user);
			template.put("entry", entry);				
	        
	        	StringWriter out = new StringWriter();
	        
	        	template.processTemplate(out);
	        	body = out.toString();		        
		} catch (TemplateException e1) {
			e1.printStackTrace();
		}

		try {			
	    		MailMessage mailMessage = new MailMessage();
	    		mailMessage.setTo(new InternetAddress(user.getEmailAddress()));
	    		mailMessage.setFrom(new InternetAddress("recyclebin@liferay.com"));
	    		mailMessage.setSubject("New interesting article");
	    		mailMessage.setBody(body);
	    		mailMessage.setHTMLFormat(true);
	    		
	    		MailServiceUtil.sendEmail(mailMessage);
		} catch (AddressException e) {
		    	e.printStackTrace();
		}
	}
}
Dear ${user.getFirstName()},
${entry.getTitleCurrentValue()}
${entry.getSummaryCurrentValue()}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment