ninja.postoffice.commonsmail.PostofficeCommonsmailImpl Maven / Gradle / Ivy
/**
* Copyright (C) 2012-2016 the original author or authors.
*
* 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 ninja.postoffice.commonsmail;
import javax.mail.internet.AddressException;
import ninja.postoffice.Mail;
import ninja.postoffice.Postoffice;
import ninja.postoffice.PostofficeConstant;
import ninja.utils.NinjaProperties;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
import com.google.inject.Inject;
public class PostofficeCommonsmailImpl implements Postoffice {
private final CommonsmailHelper commonsmailHelper;
private final String smtpHost;
private final int smtpPort;
private final boolean smtpSsl;
private final String smtpUser;
private final String smtpPassword;
private final boolean smtpDebug;
@Inject
public PostofficeCommonsmailImpl(CommonsmailHelper commonsmailHelper,
NinjaProperties props) {
this.commonsmailHelper = commonsmailHelper;
this.smtpHost = props.getOrDie(PostofficeConstant.smtpHost);
Integer smtpPort = props.getInteger(PostofficeConstant.smtpPort);
if (smtpPort == null) {
this.smtpPort = 25;
} else {
this.smtpPort = smtpPort;
}
Boolean smtpSsl = props.getBoolean(PostofficeConstant.smtpSsl);
if (smtpSsl == null) {
this.smtpSsl = false;
} else {
this.smtpSsl = smtpSsl;
}
this.smtpUser = props.get(PostofficeConstant.smtpUser);
this.smtpPassword = props.get(PostofficeConstant.smtpPassword);
Boolean smtpDebug = props.getBoolean(PostofficeConstant.smtpDebug);
if (smtpDebug == null) {
this.smtpDebug = false;
} else {
this.smtpDebug = smtpDebug;
}
}
// May be used for testing
PostofficeCommonsmailImpl(CommonsmailHelper commonsmailHelper, String smtpHost,
int smtpPort, boolean smtpSsl, String smtpUser, String smtpPassword,
boolean smtpDebug) {
this.commonsmailHelper = commonsmailHelper;
this.smtpHost = smtpHost;
this.smtpPort = smtpPort;
this.smtpSsl = smtpSsl;
this.smtpUser = smtpUser;
this.smtpPassword = smtpPassword;
this.smtpDebug = smtpDebug;
}
@Override
public void send(Mail mail) throws EmailException, AddressException {
// create a correct multipart email based on html / txt content:
MultiPartEmail multiPartEmail = commonsmailHelper.createMultiPartEmailWithContent(mail);
// fill the from, to, bcc, css and all other fields:
commonsmailHelper.doPopulateMultipartMailWithContent(multiPartEmail, mail);
// set server parameters so we can send the MultiPartEmail:
commonsmailHelper.doSetServerParameter(multiPartEmail, smtpHost, smtpPort, smtpSsl,
smtpUser, smtpPassword, smtpDebug);
// And send it:
multiPartEmail.send();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy