Search in sources :

Example 1 with DefaultEmailSender

use of org.killbill.billing.util.email.DefaultEmailSender in project killbill by killbill.

the class EmailInvoiceNotifier method notify.

@Override
public void notify(final Account account, final Invoice invoice, final TenantContext context) throws InvoiceApiException {
    if (Strings.emptyToNull(account.getEmail()) == null) {
        throw new InvoiceApiException(new IllegalArgumentException("Email for account " + account.getId() + " not specified"), ErrorCode.EMAIL_SENDING_FAILED);
    }
    final InternalTenantContext internalTenantContext = internalCallContextFactory.createInternalTenantContext(account.getId(), context);
    final List<String> to = new ArrayList<String>();
    to.add(account.getEmail());
    final List<AccountEmail> accountEmailList = accountApi.getEmails(account.getId(), internalTenantContext);
    final List<String> cc = new ArrayList<String>();
    for (final AccountEmail email : accountEmailList) {
        cc.add(email.getEmail());
    }
    // Check if this account has the MANUAL_PAY system tag
    boolean manualPay = false;
    final List<Tag> accountTags = tagUserApi.getTags(account.getId(), ObjectType.ACCOUNT, internalTenantContext);
    for (final Tag tag : accountTags) {
        if (ControlTagType.MANUAL_PAY.getId().equals(tag.getTagDefinitionId())) {
            manualPay = true;
            break;
        }
    }
    final HtmlInvoice htmlInvoice;
    try {
        htmlInvoice = generator.generateInvoice(account, invoice, manualPay, internalTenantContext);
    } catch (final IOException e) {
        throw new InvoiceApiException(e, ErrorCode.EMAIL_SENDING_FAILED);
    }
    // take localized subject, or the configured one if the localized one is not available
    String subject = htmlInvoice.getSubject();
    if (subject == null) {
        subject = config.getInvoiceEmailSubject();
    }
    final EmailSender sender = new DefaultEmailSender(config);
    try {
        sender.sendHTMLEmail(to, cc, subject, htmlInvoice.getBody());
    } catch (final EmailApiException e) {
        throw new InvoiceApiException(e, ErrorCode.EMAIL_SENDING_FAILED);
    } catch (final IOException e) {
        throw new InvoiceApiException(e, ErrorCode.EMAIL_SENDING_FAILED);
    }
}
Also used : EmailApiException(org.killbill.billing.util.email.EmailApiException) ArrayList(java.util.ArrayList) AccountEmail(org.killbill.billing.account.api.AccountEmail) HtmlInvoice(org.killbill.billing.invoice.template.HtmlInvoice) DefaultEmailSender(org.killbill.billing.util.email.DefaultEmailSender) EmailSender(org.killbill.billing.util.email.EmailSender) IOException(java.io.IOException) DefaultEmailSender(org.killbill.billing.util.email.DefaultEmailSender) InvoiceApiException(org.killbill.billing.invoice.api.InvoiceApiException) InternalTenantContext(org.killbill.billing.callcontext.InternalTenantContext) Tag(org.killbill.billing.util.tag.Tag)

Aggregations

IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 AccountEmail (org.killbill.billing.account.api.AccountEmail)1 InternalTenantContext (org.killbill.billing.callcontext.InternalTenantContext)1 InvoiceApiException (org.killbill.billing.invoice.api.InvoiceApiException)1 HtmlInvoice (org.killbill.billing.invoice.template.HtmlInvoice)1 DefaultEmailSender (org.killbill.billing.util.email.DefaultEmailSender)1 EmailApiException (org.killbill.billing.util.email.EmailApiException)1 EmailSender (org.killbill.billing.util.email.EmailSender)1 Tag (org.killbill.billing.util.tag.Tag)1