diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java
index 7ca916aa64..49578d79dd 100644
--- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java
+++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java
@@ -113,6 +113,7 @@ public class FragmentIdentity extends FragmentBase {
private EditText etCc;
private EditText etBcc;
private CheckBox cbUnicode;
+ private EditText etMaxSize;
private Button btnSave;
private ContentLoadingProgressBar pbSave;
@@ -205,6 +206,7 @@ public class FragmentIdentity extends FragmentBase {
etCc = view.findViewById(R.id.etCc);
etBcc = view.findViewById(R.id.etBcc);
cbUnicode = view.findViewById(R.id.cbUnicode);
+ etMaxSize = view.findViewById(R.id.etMaxSize);
btnSave = view.findViewById(R.id.btnSave);
pbSave = view.findViewById(R.id.pbSave);
@@ -586,6 +588,7 @@ public class FragmentIdentity extends FragmentBase {
args.putString("cc", etCc.getText().toString().trim());
args.putString("bcc", etBcc.getText().toString().trim());
args.putBoolean("unicode", cbUnicode.isChecked());
+ args.putString("max_size", etMaxSize.getText().toString());
args.putLong("account", account == null ? -1 : account.id);
args.putString("host", etHost.getText().toString().trim());
args.putBoolean("starttls", rgEncryption.getCheckedRadioButtonId() == R.id.radio_starttls);
@@ -662,6 +665,7 @@ public class FragmentIdentity extends FragmentBase {
String cc = args.getString("cc");
String bcc = args.getString("bcc");
boolean unicode = args.getBoolean("unicode");
+ String max_size = args.getString("max_size");
boolean should = args.getBoolean("should");
@@ -738,6 +742,8 @@ public class FragmentIdentity extends FragmentBase {
if (TextUtils.isEmpty(signature))
signature = null;
+ Long user_max_size = (TextUtils.isEmpty(max_size) ? null : Integer.parseInt(max_size) * 1000 * 1000L);
+
DB db = DB.getInstance(context);
EntityIdentity identity = db.identity().getIdentity(id);
@@ -799,6 +805,8 @@ public class FragmentIdentity extends FragmentBase {
return true;
if (!Objects.equals(identity.unicode, unicode))
return true;
+ if (user_max_size != null && !Objects.equals(identity.max_size, user_max_size))
+ return true;
return false;
}
@@ -818,6 +826,7 @@ public class FragmentIdentity extends FragmentBase {
!Objects.equals(fingerprint, identity.fingerprint) ||
use_ip != identity.use_ip ||
!Objects.equals(ehlo, identity.ehlo) ||
+ (user_max_size != null && !Objects.equals(user_max_size, identity.max_size)) ||
BuildConfig.DEBUG));
Log.i("Identity check=" + check);
@@ -826,7 +835,7 @@ public class FragmentIdentity extends FragmentBase {
last_connected = identity.last_connected;
// Check SMTP server
- Long max_size = null;
+ Long server_max_size = null;
if (check) {
// Create transport
String protocol = (starttls ? "smtp" : "smtps");
@@ -838,7 +847,7 @@ public class FragmentIdentity extends FragmentBase {
auth, provider,
user, password,
certificate, fingerprint);
- max_size = iservice.getMaxSize();
+ server_max_size = iservice.getMaxSize();
}
}
@@ -891,8 +900,15 @@ public class FragmentIdentity extends FragmentBase {
identity.sign_key_alias = null;
identity.error = null;
identity.last_connected = last_connected;
- if (max_size != null)
- identity.max_size = max_size;
+
+ if (user_max_size == null)
+ identity.max_size = server_max_size;
+ else {
+ if (server_max_size == null)
+ identity.max_size = user_max_size;
+ else
+ identity.max_size = Math.min(user_max_size, server_max_size);
+ }
if (identity.primary)
db.identity().resetPrimary(account);
diff --git a/app/src/main/res/layout/fragment_identity.xml b/app/src/main/res/layout/fragment_identity.xml
index 7a4a4791a7..56d6d9875d 100644
--- a/app/src/main/res/layout/fragment_identity.xml
+++ b/app/src/main/res/layout/fragment_identity.xml
@@ -685,6 +685,27 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBccHint" />
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/etMaxSize" />
+ tvReplyTo,etReplyTo,tvCc,etCc,tvCcHint,tvBcc,etBcc,tvBccHint,
+ cbUnicode,tvMaxSize,etMaxSize" />
Regex to match username of incoming email addresses
Reply to address
Allow Unicode in email addresses
+ Maximum message size (MB)
Request delivery/read receipt by default
In case of \'invalid greeting\', \'requires valid address\' or a similar error, try to change this setting
Optional
@@ -922,7 +923,7 @@
Message is empty
attached,attachment,attachments,included
Did you intend to add an attachment?
- Message too large: %1$s of %2$s
+ Message too large: %1$s > %2$s
Not all attachments have been downloaded
This dialog can be enabled again via the three-dots menu in the top action bar
Draft discarded