preparing message store
This commit is contained in:
@@ -4,9 +4,14 @@ import de.srsoftware.tools.translations.Translation;
|
||||
import de.srsoftware.widerhall.data.MailingList;
|
||||
import de.srsoftware.widerhall.data.User;
|
||||
|
||||
import javax.mail.Message;
|
||||
import javax.mail.MessagingException;
|
||||
import javax.mail.Multipart;
|
||||
import javax.mail.Part;
|
||||
import javax.mail.internet.AddressException;
|
||||
import javax.mail.internet.InternetAddress;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.MessageDigest;
|
||||
@@ -118,4 +123,39 @@ public class Util {
|
||||
public static boolean getCheckbox(HttpServletRequest req, String key) {
|
||||
return "on".equals(req.getParameter(key));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the primary text content of the message.
|
||||
*/
|
||||
public static String getText(Part p) throws MessagingException, IOException {
|
||||
// https://javaee.github.io/javamail/FAQ
|
||||
if (p.isMimeType("text/*")) return (String)p.getContent();
|
||||
|
||||
if (p.isMimeType("multipart/alternative")) {
|
||||
// prefer html text over plain text
|
||||
Multipart mp = (Multipart)p.getContent();
|
||||
String text = null;
|
||||
for (int i = 0; i < mp.getCount(); i++) {
|
||||
Part bp = mp.getBodyPart(i);
|
||||
if (bp.isMimeType("text/plain")) {
|
||||
if (text == null) text = getText(bp);
|
||||
continue;
|
||||
} else if (bp.isMimeType("text/html")) {
|
||||
String s = getText(bp);
|
||||
if (s != null) return s;
|
||||
} else {
|
||||
return getText(bp);
|
||||
}
|
||||
}
|
||||
return text;
|
||||
} else if (p.isMimeType("multipart/*")) {
|
||||
Multipart mp = (Multipart)p.getContent();
|
||||
for (int i = 0; i < mp.getCount(); i++) {
|
||||
String s = getText(mp.getBodyPart(i));
|
||||
if (s != null) return s;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user