Package sk.vrto.service.email

Source Code of sk.vrto.service.email.EmailServiceImpl

package sk.vrto.service.email;

import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import sk.vrto.domain.Email;
import sk.vrto.domain.EmailAccount;
import sk.vrto.service.crypto.StringEncrypter;

import java.util.Properties;

/**
* Implementation based on apache commons-mail
*/
@Service("email.emailService")
public class EmailServiceImpl implements EmailService {

    private final Properties smtProperties;
    private final StringEncrypter encrypter;

    @Autowired
    public EmailServiceImpl(
            @Qualifier("app.hotmailProperties") Properties smtProperties,
            @Qualifier("app.saltedAesEncrypter") StringEncrypter encrypter) {
        this.smtProperties = smtProperties;
        this.encrypter = encrypter;
    }

    @Override
    public void send(EmailAccount from, Email email) {
        try {
            final HtmlEmail message = new HtmlEmail();
            message.setHostName(smtProperties.getProperty("mail.smtp.host"));
            message.setSmtpPort(Integer.parseInt(smtProperties.getProperty("mail.smtp.port")));
            message.setAuthenticator(new DefaultAuthenticator(
                    from.getEmailAddress(), encrypter.decrypt(from.getPassword())));
            message.setTLS(true);
            message.setFrom(from.getEmailAddress());
            message.setSubject(email.getTitle());
            message.setHtmlMsg(email.getContent());
            message.setMsg(email.getContent());
            message.addTo(email.getContact().getEmail());
            doSend(message);
        } catch (Exception e) {
            throw new RuntimeException("Unable to send mail", e);
        }

    }

    // mockable
    protected void doSend(org.apache.commons.mail.Email email) throws EmailException {
        email.send();
    }

}
TOP

Related Classes of sk.vrto.service.email.EmailServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.