ketmar patch for non mbox format

This commit is contained in:
Adam D. Ruppe 2017-02-17 10:23:11 -05:00
parent d9f6d9e497
commit 06e3d82803
1 changed files with 14 additions and 7 deletions

21
email.d
View File

@ -506,7 +506,12 @@ class MimeContainer {
import std.algorithm : startsWith; import std.algorithm : startsWith;
class IncomingEmailMessage { class IncomingEmailMessage {
this(ref immutable(ubyte)[][] mboxLines) { this(string[] lines) {
auto lns = cast(immutable(ubyte)[][])lines;
this(lns, false);
}
this(ref immutable(ubyte)[][] mboxLines, bool asmbox=true) {
enum ParseState { enum ParseState {
lookingForFrom, lookingForFrom,
@ -514,7 +519,7 @@ class IncomingEmailMessage {
readingBody readingBody
} }
auto state = ParseState.lookingForFrom; auto state = (asmbox ? ParseState.lookingForFrom : ParseState.readingHeaders);
string contentType; string contentType;
bool isMultipart; bool isMultipart;
@ -606,11 +611,13 @@ class IncomingEmailMessage {
} }
break; break;
case ParseState.readingBody: case ParseState.readingBody:
if(line.startsWith("From ")) { if (asmbox) {
break lineLoop; // we're at the beginning of the next messsage if(line.startsWith("From ")) {
} break lineLoop; // we're at the beginning of the next messsage
if(line.startsWith(">>From") || line.startsWith(">From")) { }
line = line[1 .. $]; if(line.startsWith(">>From") || line.startsWith(">From")) {
line = line[1 .. $];
}
} }
if(isMultipart) { if(isMultipart) {