diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java
index e6a50b1f7d..ee80f9d384 100644
--- a/app/src/main/java/eu/faircode/email/FragmentCompose.java
+++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java
@@ -4414,7 +4414,7 @@ public class FragmentCompose extends FragmentBase {
final TextView tvVia = dview.findViewById(R.id.tvVia);
final CheckBox cbPlainOnly = dview.findViewById(R.id.cbPlainOnly);
final CheckBox cbReceipt = dview.findViewById(R.id.cbReceipt);
- final TextView tvReceipt = dview.findViewById(R.id.tvReceipt);
+ final TextView tvReceipt = dview.findViewById(R.id.tvReceiptType);
final Spinner spEncrypt = dview.findViewById(R.id.spEncrypt);
final Spinner spPriority = dview.findViewById(R.id.spPriority);
final TextView tvSendAt = dview.findViewById(R.id.tvSendAt);
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java
index d31f28538a..49618c28d0 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java
@@ -51,6 +51,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
private SwitchCompat swExtendedReply;
private SwitchCompat swQuoteReply;
private SwitchCompat swPlainOnly;
+ private Spinner spReceiptType;
private Spinner spSignatureLocation;
private SwitchCompat swUsenetSignature;
private SwitchCompat swRemoveSignatures;
@@ -66,7 +67,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
private final static String[] RESET_OPTIONS = new String[]{
"keyboard", "suggest_sent", "suggested_received",
"prefix_once", "extended_reply", "quote_reply",
- "plain_only", "signature_location", "usenet_signature", "remove_signatures",
+ "plain_only", "receipt_type", "signature_location", "usenet_signature", "remove_signatures",
"resize_images", "resize_attachments", "send_reminders", "receipt_default", "resize", "lookup_mx", "send_delayed"
};
@@ -88,6 +89,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
swExtendedReply = view.findViewById(R.id.swExtendedReply);
swQuoteReply = view.findViewById(R.id.swQuoteReply);
swPlainOnly = view.findViewById(R.id.swPlainOnly);
+ spReceiptType = view.findViewById(R.id.spReceiptType);
spSignatureLocation = view.findViewById(R.id.spSignatureLocation);
swUsenetSignature = view.findViewById(R.id.swUsenetSignature);
swRemoveSignatures = view.findViewById(R.id.swRemoveSignatures);
@@ -163,6 +165,18 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
}
});
+ spReceiptType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int position, long id) {
+ prefs.edit().putInt("receipt_type", position).apply();
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+ prefs.edit().remove("receipt_type").apply();
+ }
+ });
+
spSignatureLocation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> adapterView, View view, int position, long id) {
@@ -307,6 +321,9 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
swQuoteReply.setChecked(prefs.getBoolean("quote_reply", true));
swPlainOnly.setChecked(prefs.getBoolean("plain_only", false));
+ int receipt_type = prefs.getInt("receipt_type", 2);
+ spReceiptType.setSelection(receipt_type);
+
int signature_location = prefs.getInt("signature_location", 1);
spSignatureLocation.setSelection(signature_location);
diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java
index 85f340ce73..8ab02f3839 100644
--- a/app/src/main/java/eu/faircode/email/MessageHelper.java
+++ b/app/src/main/java/eu/faircode/email/MessageHelper.java
@@ -231,11 +231,19 @@ public class MessageHelper {
if (message.receipt_request != null && message.receipt_request) {
String to = (identity.replyto == null ? identity.email : identity.replyto);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ int receipt_type = prefs.getInt("receipt_type", 2);
+ // 0=Read receipt
+ // 1=Delivery receipt
+ // 2=Read+delivery receipt
+
// defacto standard
- imessage.addHeader("Return-Receipt-To", to);
+ if (receipt_type == 1 || receipt_type == 2) // Delivery receipt
+ imessage.addHeader("Return-Receipt-To", to);
// https://tools.ietf.org/html/rfc3798
- imessage.addHeader("Disposition-Notification-To", to);
+ if (receipt_type == 0 || receipt_type == 2) // Read receipt
+ imessage.addHeader("Disposition-Notification-To", to);
}
}
diff --git a/app/src/main/res/layout/dialog_send.xml b/app/src/main/res/layout/dialog_send.xml
index d60c9b775f..9f3a9dfd2a 100644
--- a/app/src/main/res/layout/dialog_send.xml
+++ b/app/src/main/res/layout/dialog_send.xml
@@ -126,7 +126,7 @@
app:layout_constraintTop_toBottomOf="@id/cbPlainOnly" />
+ app:layout_constraintTop_toBottomOf="@id/tvReceiptType" />
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/spReceiptType" />
Signature position
Add signature after quoted/forwarded message
Send plain text only by default
+ When requesting a receipt
Usenet signature convention
Remove recognized signatures
Automatically resize embedded images
@@ -807,7 +808,7 @@
No private key
Invalid private key
Plain text only
- Request delivery/read receipt
+ Request receipt
Most providers and email clients ignore receipt requests
Sender missing
@@ -1357,6 +1358,12 @@
- Large
+
+ - Read receipt
+ - Delivery receipt
+ - Read+delivery receipt
+
+
- Above the text
- Below the text