From: adam Date: Mon, 15 Jan 2007 08:13:30 +0000 (+0000) Subject: insist on a Message-ID X-Git-Url: http://git.megacz.com/?p=org.ibex.mail.git;a=commitdiff_plain;h=73aabb0888eea91734fc408f8fbaf1e88a52fe13 insist on a Message-ID darcs-hash:20070115081330-5007d-c4631c50cfafaba556cd89f81c70733e2ba2407b.gz --- diff --git a/src/org/ibex/mail/Message.java b/src/org/ibex/mail/Message.java index 6738dc8..b4db07e 100644 --- a/src/org/ibex/mail/Message.java +++ b/src/org/ibex/mail/Message.java @@ -101,13 +101,35 @@ public class Message extends MIME.Part { this.bcc = Address.list(headers.get("Bcc")); this.date = parseDate(headers.get("Date")) == null ? new Date() : parseDate(headers.get("Date")); - // RFC2822 requires a "Date" field, so we synthesize one if missing - if (headers.get("Date") == null) - headers.set("Date", this.date.toString()); // FIXME: formatting + if (this.messageid==null) + throw new RuntimeException("every RFC2822 message must have a Message-ID: header"); + + /* + // synthesize a message-id if not provided + this.messageid = headers.get("Message-Id") == null ? generateFreshMessageId(sha1(in.getStream())) : headers.get("Message-Id"); + if (headers.get("Message-Id") == null) { + headers = headers.set("Message-Id", this.messageid); + Log.warn(Message.class, "synthesizing message-id for " + summary()); + } + */ this.arrival = this.date; // FIXME wrong; grab this from traces? } + /* + private static String sha1(Stream stream) { + SHA1 sha1 = new SHA1(); + byte[] b = new byte[1024]; + while(true) { + int numread = stream.read(b, 0, b.length); + if (numread == -1) break; + sha1.update(b, 0, numread); + } + byte[] results = new byte[sha1.getDigestSize()]; + sha1.doFinal(results, 0); + return new String(Encode.toBase64(results)); + } + */ // Helpers /////////////////////////////////////////////////////////////////////////////