Skip to content

it-crowd/seam3-mailman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

seam3-mailman

Integration of seam3 JMS and mail.

If you want to assure your mail get's delivered despite temporary mail server problems use JMS. This library helps to integrate seam3 JMS and Mail modules.

Just include the seam3-mailman.jar into your classpath and configure destinations for JMSMailListener MDB ans Mailman:

ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
    <enterprise-beans>
        <message-driven>
            <ejb-name>JMSMailListener</ejb-name>
            <ejb-class>pl.itcrowd.seam3.mailman.JMSMailListener</ejb-class>
            <activation-config>
                <activation-config-property>
                    <activation-config-property-name>destination</activation-config-property-name>
                    <activation-config-property-value>queue/exampleAppMail</activation-config-property-value>
                </activation-config-property>
            </activation-config>
        </message-driven>
    </enterprise-beans>    
</ejb-jar>

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:s="urn:java:ee" xmlns:mailman="urn:java:pl.com.it_crowd.seam3.mailman"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd">
    <mailman:Mailman queueName="queue/exampleAppMail">
        <s:modifies/>
    </mailman:Mailman>    
</beans>

Suggested API usage:

import org.jboss.seam.mail.api.MailMessage;
import org.jboss.seam.mail.core.EmailAttachment;
import org.jboss.seam.mail.core.EmailContact;
import org.jboss.seam.mail.templating.freemarker.FreeMarkerTemplate;
import org.jboss.solder.resourceLoader.ResourceProvider;
import pl.itcrowd.seam3.mailman.Mailman;

public class YourMailman {

    @Inject
    private ResourceProvider resourceProvider;
    @Inject
    private Mailman mailman;
    @Inject
    private Instance<MailMessage> mailMessage;

    public void send(String template, String subject, String fromEmail, Map<String, Object> context,
                              Collection<EmailAttachment> attachements, String... toEmail)
    {
        final MailMessage message = mailMessage.get()
            .from(fromEmail)
            .to(toEmail)
            .subject(subject)
            .bodyHtml(new FreeMarkerTemplate(resourceProvider.loadResourceStream(template)))
            .put(context)
            .addAttachments(attachements);
        message.mergeTemplates();
        mailman.send(message.getEmailMessage());
    }
}

Rember that if you set subject, body text or html via templates you must invoke MailMessage.mergeTemplates() before sending it to mailman!

About

Integration of seam3 JMS and mail

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages