All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nz.co.testamation.common.mail.MimeMessageFactoryImpl Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2016 Ratha Long
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package nz.co.testamation.common.mail;

import org.apache.commons.lang3.StringUtils;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;

public class MimeMessageFactoryImpl implements MimeMessageFactory {

    private final Session session;
    private MultipartMessageFactory multipartMessageFactory;


    public MimeMessageFactoryImpl( MailSessionFactory mailSessionFactory, MultipartMessageFactory multipartMessageFactory ) {
        this.multipartMessageFactory = multipartMessageFactory;
        this.session = mailSessionFactory.create();
    }

    @Override
    public Message create( Email email ) {
        try {
            EmailAddresses emailAddresses = email.getEmailAddresses();

            MimeMessage mimeMessage = new MimeMessage( session );
            mimeMessage.setSubject( email.getSubject() );
            mimeMessage.setFrom( new InternetAddress( emailAddresses.getFrom() ) );

            if ( StringUtils.isNotBlank( emailAddresses.getReplyTo() ) ) {
                mimeMessage.setReplyTo( InternetAddress.parse( emailAddresses.getReplyTo() ) );
            }

            addRecipients( mimeMessage, Message.RecipientType.TO, emailAddresses.getToAddresses() );
            addRecipients( mimeMessage, Message.RecipientType.CC, emailAddresses.getCcAddresses() );
            addRecipients( mimeMessage, Message.RecipientType.BCC, emailAddresses.getBccAddresses() );

            mimeMessage.setContent( multipartMessageFactory.create( email ) );
            mimeMessage.setSentDate( new Date() );

            return mimeMessage;
        } catch ( Exception e ) {
            throw new RuntimeException( e );
        }

    }

    private void addRecipients( MimeMessage mimeMessage, Message.RecipientType type, String emailAddresses ) throws MessagingException {
        if ( StringUtils.isNotBlank( emailAddresses ) ) {
            mimeMessage.addRecipients( type, emailAddresses );
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy