mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-12-28 07:55:21 +00:00
Improved MIME email addresses parse info
This commit is contained in:
parent
ec9197cb85
commit
be8d302b82
@ -16,12 +16,13 @@ export function ParseMime(text)
|
||||
this.boundary = '';
|
||||
this.bodyText = '';
|
||||
// https://datatracker.ietf.org/doc/html/rfc2822#section-3.6
|
||||
// https://datatracker.ietf.org/doc/html/rfc4021
|
||||
this.headers = {
|
||||
// Required
|
||||
date = null,
|
||||
from = [], // mailbox-list
|
||||
// Optional
|
||||
sender = [], // MUST occur with multi-address
|
||||
sender = [], // mailbox MUST occur with multi-address
|
||||
'reply-to' = [], // address-list
|
||||
to = [], // address-list
|
||||
cc = [], // address-list
|
||||
@ -34,7 +35,6 @@ export function ParseMime(text)
|
||||
comments = [], // unstructured
|
||||
keywords = [], // phrase *("," phrase)
|
||||
// https://datatracker.ietf.org/doc/html/rfc2822#section-3.6.6
|
||||
trace = [],
|
||||
'resent-date' = [],
|
||||
'resent-from' = [],
|
||||
'resent-sender' = [],
|
||||
@ -42,13 +42,15 @@ export function ParseMime(text)
|
||||
'resent-cc' = [],
|
||||
'resent-bcc' = [],
|
||||
'resent-msg-id' = [],
|
||||
// https://datatracker.ietf.org/doc/html/rfc2822#section-3.6.7
|
||||
trace = [],
|
||||
'return-path' = '', // angle-addr
|
||||
received = [],
|
||||
// optional others outside RFC2822
|
||||
'mime-version' = '',
|
||||
'mime-version' = '', // RFC2045
|
||||
'content-transfer-encoding' = '',
|
||||
'content-type' = '',
|
||||
'delivered-to' = '', // angle-addr
|
||||
'return-path' = '', // angle-addr
|
||||
'received' = [],
|
||||
'delivered-to' = [], // RFC9228 addr-spec
|
||||
'authentication-results' = '', // dkim, spf, dmarc
|
||||
'dkim-signature' = '',
|
||||
'x-rspamd-queue-id' = '',
|
||||
@ -57,6 +59,7 @@ export function ParseMime(text)
|
||||
'x-rspamd-server' = '',
|
||||
'x-spamd-result' = '',
|
||||
'x-remote-address' = '',
|
||||
// etc.
|
||||
};
|
||||
}
|
||||
*/
|
||||
|
||||
@ -77,7 +77,6 @@ export function MimeToMessage(data, message)
|
||||
const text = struct.getByContentType('text/plain');
|
||||
message.plain(text ? text.body : '');
|
||||
message.html(html);
|
||||
console.dir({message});
|
||||
} else {
|
||||
message.plain(data);
|
||||
}
|
||||
|
||||
@ -52,4 +52,24 @@ export class EmailCollectionModel extends AbstractCollectionModel
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {array} [{name: "Name", email: "address@domain"}]
|
||||
*/
|
||||
/*
|
||||
static fromArray(addresses) {
|
||||
let list = new this();
|
||||
list.fromArray(addresses);
|
||||
return list;
|
||||
}
|
||||
fromArray(addresses) {
|
||||
addresses.forEach(item => {
|
||||
item = new EmailModel(item.email, item.name);
|
||||
// Make them unique
|
||||
if (item.email && item.name || !this.find(address => address.email == item.email)) {
|
||||
this.push(item);
|
||||
}
|
||||
});
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
@ -235,11 +235,11 @@ export class MessageModel extends AbstractModel {
|
||||
this.messageId = headers.valueByName('Message-Id');
|
||||
this.subject(headers.valueByName('Subject'));
|
||||
this.sender = EmailCollectionModel.fromString(headers.valueByName('Sender'));
|
||||
this.from = EmailCollectionModel.fromString(headers.valueByName('From'));
|
||||
this.replyTo = EmailCollectionModel.fromString(headers.valueByName('Reply-To'));
|
||||
this.to = EmailCollectionModel.fromString(headers.valueByName('To'));
|
||||
this.cc = EmailCollectionModel.fromString(headers.valueByName('Cc'));
|
||||
this.bcc = EmailCollectionModel.fromString(headers.valueByName('Bcc'));
|
||||
this.from = EmailCollectionModel.fromArray(headers.valueByName('From'));
|
||||
this.replyTo = EmailCollectionModel.fromArray(headers.valueByName('Reply-To'));
|
||||
this.to = EmailCollectionModel.fromArray(headers.valueByName('To'));
|
||||
this.cc = EmailCollectionModel.fromArray(headers.valueByName('Cc'));
|
||||
this.bcc = EmailCollectionModel.fromArray(headers.valueByName('Bcc'));
|
||||
this.inReplyTo = headers.valueByName('In-Reply-To');
|
||||
|
||||
this.deliveredTo = EmailCollectionModel.fromString(headers.valueByName('Delivered-To'));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user