Native DKIM: use MIME stream

pull/212/head
M66B 3 years ago
parent 53dad56902
commit 4fbbd42292

@ -1996,10 +1996,13 @@ public class MessageHelper {
try { try {
// Workaround reformatted headers (Content-Type) // Workaround reformatted headers (Content-Type)
InternetHeaders ih = new InternetHeaders(((ReadableMime) imessage).getMimeStream(), true); // This will do a BODY.PEEK[]
Properties props = MessageHelper.getSessionProperties(true);
Session isession = Session.getInstance(props, null);
MimeMessage amessage = new MimeMessage(isession, ((ReadableMime) imessage).getMimeStream());
// https://datatracker.ietf.org/doc/html/rfc6376/ // https://datatracker.ietf.org/doc/html/rfc6376/
String[] headers = ih.getHeader("DKIM-Signature"); String[] headers = amessage.getHeader("DKIM-Signature");
if (headers == null || headers.length < 1) if (headers == null || headers.length < 1)
return signers; return signers;
@ -2064,7 +2067,7 @@ public class MessageHelper {
String[] values = ("DKIM-Signature".equals(key) String[] values = ("DKIM-Signature".equals(key)
? new String[]{header} ? new String[]{header}
: ih.getHeader(key)); : amessage.getHeader(key));
if (values == null || idx > values.length) { if (values == null || idx > values.length) {
// https://datatracker.ietf.org/doc/html/rfc6376/#section-5.4 // https://datatracker.ietf.org/doc/html/rfc6376/#section-5.4
Log.i("DKIM missing header=" + Log.i("DKIM missing header=" +
@ -2086,7 +2089,7 @@ public class MessageHelper {
else { else {
// Find original header/name (case sensitive) // Find original header/name (case sensitive)
int _idx = values.length - idx; int _idx = values.length - idx;
Enumeration<Header> oheaders = ih.getAllHeaders(); Enumeration<Header> oheaders = amessage.getAllHeaders();
while (oheaders.hasMoreElements()) { while (oheaders.hasMoreElements()) {
Header oheader = oheaders.nextElement(); Header oheader = oheaders.nextElement();
if (key.equalsIgnoreCase(oheader.getName())) { if (key.equalsIgnoreCase(oheader.getName())) {
@ -2111,7 +2114,7 @@ public class MessageHelper {
Log.i("DKIM head=" + head.toString().replace("\r\n", "|")); Log.i("DKIM head=" + head.toString().replace("\r\n", "|"));
ByteArrayOutputStream bos = new ByteArrayOutputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream();
Helper.copy(imessage.getRawInputStream(), bos); Helper.copy(amessage.getRawInputStream(), bos);
String body = bos.toString(); // TODO: charset? String body = bos.toString(); // TODO: charset?
if ("simple".equals(c[c.length > 1 ? 1 : 0])) { if ("simple".equals(c[c.length > 1 ? 1 : 0])) {
if (TextUtils.isEmpty(body)) if (TextUtils.isEmpty(body))

Loading…
Cancel
Save