mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-04 08:08:16 +02:00
Added read receipts
This commit is contained in:
@@ -189,6 +189,7 @@ public class MessageHelper {
|
||||
return props;
|
||||
}
|
||||
|
||||
|
||||
static MimeMessageEx from(Context context, EntityMessage message, EntityIdentity identity, Session isession)
|
||||
throws MessagingException, IOException {
|
||||
DB db = DB.getInstance(context);
|
||||
@@ -291,6 +292,30 @@ public class MessageHelper {
|
||||
static void build(Context context, EntityMessage message, EntityIdentity identity, MimeMessage imessage) throws IOException, MessagingException {
|
||||
DB db = DB.getInstance(context);
|
||||
|
||||
if (message.receipt_request != null && message.receipt_request) {
|
||||
// https://www.ietf.org/rfc/rfc3798.txt
|
||||
Multipart report = new MimeMultipart("report; report-type=disposition-notification");
|
||||
|
||||
String plainContent = HtmlHelper.getText(Helper.readText(message.getFile(context)));
|
||||
|
||||
BodyPart plainPart = new MimeBodyPart();
|
||||
plainPart.setContent(plainContent, "text/plain; charset=" + Charset.defaultCharset().name());
|
||||
report.addBodyPart(plainPart);
|
||||
|
||||
BodyPart dnsPart = new MimeBodyPart();
|
||||
dnsPart.setContent("", "message/disposition-notification; name=\"MDNPart2.txt\"");
|
||||
dnsPart.setDisposition(Part.INLINE);
|
||||
report.addBodyPart(dnsPart);
|
||||
|
||||
//BodyPart headersPart = new MimeBodyPart();
|
||||
//headersPart.setContent("", "text/rfc822-headers; name=\"MDNPart3.txt\"");
|
||||
//headersPart.setDisposition(Part.INLINE);
|
||||
//report.addBodyPart(headersPart);
|
||||
|
||||
imessage.setContent(report);
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder body = new StringBuilder();
|
||||
body.append(Helper.readText(message.getFile(context)));
|
||||
|
||||
@@ -458,6 +483,26 @@ public class MessageHelper {
|
||||
imessage.getHeader("Disposition-Notification-To") != null);
|
||||
}
|
||||
|
||||
Address[] getReceiptTo() throws MessagingException {
|
||||
String to = imessage.getHeader("Disposition-Notification-To", null);
|
||||
if (to == null)
|
||||
return null;
|
||||
|
||||
InternetAddress[] address = null;
|
||||
try {
|
||||
address = InternetAddress.parse(to);
|
||||
} catch (AddressException ex) {
|
||||
Log.w(ex);
|
||||
}
|
||||
|
||||
if (address == null || address.length == 0)
|
||||
return null;
|
||||
|
||||
fix(address[0]);
|
||||
|
||||
return new Address[]{address[0]};
|
||||
}
|
||||
|
||||
String getAuthentication() throws MessagingException {
|
||||
String header = imessage.getHeader("Authentication-Results", "");
|
||||
return (header == null ? null : header.replaceAll("\\r?\\n", ""));
|
||||
|
||||
Reference in New Issue
Block a user