18 package org.turro.mail.impl;
20 import java.util.Date;
21 import java.util.HashSet;
24 import java.util.function.Consumer;
25 import java.util.logging.Level;
26 import java.util.logging.Logger;
27 import javax.mail.internet.InternetAddress;
28 import org.apache.commons.mail.EmailException;
29 import org.turro.elephant.context.ElephantContext;
30 import org.turro.elephant.impl.abstracts.AbstractImplementation;
31 import org.turro.marker.ElephantMarker;
39 private final Date date =
new Date();
40 private final Set<MailMessage> pool =
new HashSet<>();
41 private String encoding;
48 this.encoding = encoding;
52 String message, String
template, String name, String login) {
53 return addToPoolTemplate(from, to, cc, subject, message,
template, name, login,
null);
57 String message, String
template, String name, String login, Map args) {
72 em.
put(
"body", message);
78 }
catch (EmailException ex) {
99 }
catch (EmailException ex) {
107 mail.
addHeader(
"X-Mailer",
"Elephant Mail System");
108 mail.setSentDate(date);
115 if(password ==
null) {
118 mail.setPassword(password);
120 mail.setSubject(cleanSubject(mail.getSubject()));
124 Logger.getLogger(
MailMessagePool.class.getName()).log(Level.INFO,
"Added mail from {0} to {1}. Subject: {2}",
125 new Object[]{mail.getEmail().getFromAddress().getAddress(),
126 InternetAddress.toString((InternetAddress[]) mail.getEmail().getToAddresses().toArray(
new InternetAddress[0])), mail.getSubject()});
129 }
catch(Exception ex) {
145 private String cleanSubject(String subject) {
146 subject = subject.replaceAll(
"\\<\\/?[\\?a-zA-Z\\-\\:\\_0-9]+\\ ?.*?\\>",
"");
147 subject = subject.replaceAll(
"\\n|\\r",
" ");
static String logMsg(String msg)
static byte[] decrypt(byte[] value)
KeyValueMap getAttributes()
MailMessage addToPool(String from, String to, String cc, String subject, String message)
MailMessage addToPool(MailMessage mail)
void setEncoding(String encoding)
MailMessage addToPoolTemplate(String from, String to, String cc, String subject, String message, String template, String name, String login)
MailMessage addToPoolTemplate(String from, String to, String cc, String subject, String message, String template, String name, String login, Map args)
void sendPool(Consumer onFinish)
void setMessage(ElephantMarker marker, IContact contact)
void setSubject(String subject)
void addHeader(String name, String value)
void setCharset(String newCharset)
Email addCc(String email, String name)
Email setFrom(String email, String name)
void setMessage(String message)
Email addTo(String email, String name)
static MailQueueConsumer getInstance()
void addToQueue(Collection< MailMessage > pool)
Object put(Object key, Object value)