19 package org.turro.mail.impl;
21 import java.net.URLDecoder;
22 import java.nio.charset.StandardCharsets;
23 import java.util.logging.Level;
24 import java.util.logging.Logger;
25 import java.util.regex.Matcher;
26 import java.util.regex.Pattern;
27 import javax.mail.internet.AddressException;
28 import javax.mail.internet.InternetAddress;
29 import org.amic.util.string.Strings;
30 import org.turro.action.Actions;
31 import org.turro.elephant.context.ElephantContext;
32 import org.turro.elephant.security.IUser;
33 import org.turro.plugin.contacts.IContact;
43 for(InternetAddress ia : InternetAddress.parse(emails,
true)) {
47 }
catch (AddressException ex) {
55 for(InternetAddress ia : InternetAddress.parse(emails,
true)) {
59 }
catch (AddressException ex) {
102 if(message.contains(
"{livelink")) {
103 Pattern pat = Pattern.compile(LIVE_LINK_PATTERN);
104 Matcher mat = pat.matcher(message);
105 StringBuffer result =
new StringBuffer();
108 if(mat.groupCount() > 1 && !Strings.isBlank(mat.group(1)) && !Strings.isBlank(mat.group(2))) {
111 mat.appendReplacement(result,
"<a href=\"" + server +
"\">" + mat.group(1) +
"</a>");
113 }
catch (Exception ex) {
117 mat.appendTail(result);
118 return result.toString();
124 if(message.contains(
"{liveref")) {
125 Pattern pat = Pattern.compile(LIVE_REF_PATTERN);
126 Matcher mat = pat.matcher(message);
127 StringBuffer result =
new StringBuffer();
130 if(mat.groupCount() > 0 && !Strings.isBlank(mat.group(1))) {
133 mat.appendReplacement(result, server);
135 }
catch (Exception ex) {
139 mat.appendTail(result);
140 return result.toString();
146 if(message.contains(
"{livelink")) {
147 Pattern pat = Pattern.compile(LIVE_LINK_PATTERN);
148 Matcher mat = pat.matcher(message);
149 StringBuffer result =
new StringBuffer();
152 if(mat.groupCount() > 1 && !Strings.isBlank(mat.group(1)) && !Strings.isBlank(mat.group(2))) {
153 mat.appendReplacement(result,
"<a href='" + mat.group(2) +
"'>" + mat.group(1) +
"</a>");
155 }
catch (Exception ex) {
159 mat.appendTail(result);
160 return result.toString();
166 if(message.contains(
"{liveref")) {
167 Pattern pat = Pattern.compile(LIVE_REF_PATTERN);
168 Matcher mat = pat.matcher(message);
169 StringBuffer result =
new StringBuffer();
172 if(mat.groupCount() > 0 && !Strings.isBlank(mat.group(1))) {
173 mat.appendReplacement(result, mat.group(1));
175 }
catch (Exception ex) {
179 mat.appendTail(result);
180 return result.toString();
185 private static final String LIVE_LINK_PATTERN =
"\\{livelink\\:([^\\:\\}]*)\\:?([^\\:\\}]*)\\}";
186 private static final String LIVE_REF_PATTERN =
"\\{liveref\\:([^\\:\\}]*)\\}";
187 private static final String LINK_PATTERN =
"\\{link\\:([^\\:\\}]*)\\:?([^\\:\\}]*)\\}";
192 return message.replaceAll(
"\\<img ",
"<img style=\"max-width:100%\" ");
207 public static String
processUser(String email, String name, String message) {
208 if(!Strings.isBlank(email)) {
209 message = message.replaceAll(
"\\{email\\}", email);
211 if(!Strings.isBlank(name)) {
212 message = message.replaceAll(
"\\{name\\}", name);
static String createActionFromElephant(String email, String redir)
static String getServerUrl(String scheme)
static String logMsg(String msg)
static String processLinks(String email, String message)
static String cleanLiveLinks(String message)
static String cleanLinks(String message)
static String processImgWidth(String message)
static String processLinks(IContact contact, String message)
static String processUser(IContact contact, String message)
static String cleanLiveRefs(String message)
static String processLiveRefs(String email, String message)
static boolean isValidEmailAddress(String emails)
static String processLiveLinks(String email, String message)
static String processUser(String email, String name, String message)
static String processMacrosForWeb(IContact contact, String message)
static String processMacros(IContact contact, String message)
static boolean silentEmailCheck(String emails)
static final String CONNECTOR_EMAIL