mirror of
https://github.com/M66B/FairEmail.git
synced 2025-01-03 13:44:40 +00:00
Added input field for MAIL FROM
This commit is contained in:
parent
a32d71273b
commit
8529e6c012
6 changed files with 3090 additions and 4 deletions
3027
app/schemas/eu.faircode.email.DB/292.json
Normal file
3027
app/schemas/eu.faircode.email.DB/292.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -68,7 +68,7 @@ import javax.mail.internet.InternetAddress;
|
||||||
// https://developer.android.com/topic/libraries/architecture/room.html
|
// https://developer.android.com/topic/libraries/architecture/room.html
|
||||||
|
|
||||||
@Database(
|
@Database(
|
||||||
version = 291,
|
version = 292,
|
||||||
entities = {
|
entities = {
|
||||||
EntityIdentity.class,
|
EntityIdentity.class,
|
||||||
EntityAccount.class,
|
EntityAccount.class,
|
||||||
|
@ -2950,6 +2950,12 @@ public abstract class DB extends RoomDatabase {
|
||||||
logMigration(startVersion, endVersion);
|
logMigration(startVersion, endVersion);
|
||||||
db.execSQL("ALTER TABLE `folder` ADD COLUMN `last_view` INTEGER");
|
db.execSQL("ALTER TABLE `folder` ADD COLUMN `last_view` INTEGER");
|
||||||
}
|
}
|
||||||
|
}).addMigrations(new Migration(291, 292) {
|
||||||
|
@Override
|
||||||
|
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
||||||
|
logMigration(startVersion, endVersion);
|
||||||
|
db.execSQL("ALTER TABLE `identity` ADD COLUMN `envelopeFrom` TEXT");
|
||||||
|
}
|
||||||
}).addMigrations(new Migration(998, 999) {
|
}).addMigrations(new Migration(998, 999) {
|
||||||
@Override
|
@Override
|
||||||
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
||||||
|
|
|
@ -63,8 +63,6 @@ public class EntityIdentity {
|
||||||
public String name;
|
public String name;
|
||||||
@NonNull
|
@NonNull
|
||||||
public String email;
|
public String email;
|
||||||
@Ignore
|
|
||||||
public String envelopeFrom;
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public Long account;
|
public Long account;
|
||||||
public String display;
|
public String display;
|
||||||
|
@ -114,6 +112,7 @@ public class EntityIdentity {
|
||||||
public String replyto;
|
public String replyto;
|
||||||
public String cc;
|
public String cc;
|
||||||
public String bcc;
|
public String bcc;
|
||||||
|
public String envelopeFrom;
|
||||||
public String internal;
|
public String internal;
|
||||||
public String uri; // linked contact
|
public String uri; // linked contact
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|
|
@ -128,6 +128,7 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
private EditText etReplyTo;
|
private EditText etReplyTo;
|
||||||
private EditText etCc;
|
private EditText etCc;
|
||||||
private EditText etBcc;
|
private EditText etBcc;
|
||||||
|
private EditText etEnvelopeFrom;
|
||||||
private EditText etInternal;
|
private EditText etInternal;
|
||||||
private Button btnUri;
|
private Button btnUri;
|
||||||
private TextView tvUriInfo;
|
private TextView tvUriInfo;
|
||||||
|
@ -237,6 +238,7 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
etReplyTo = view.findViewById(R.id.etReplyTo);
|
etReplyTo = view.findViewById(R.id.etReplyTo);
|
||||||
etCc = view.findViewById(R.id.etCc);
|
etCc = view.findViewById(R.id.etCc);
|
||||||
etBcc = view.findViewById(R.id.etBcc);
|
etBcc = view.findViewById(R.id.etBcc);
|
||||||
|
etEnvelopeFrom = view.findViewById(R.id.etEnvelopeFrom);
|
||||||
etInternal = view.findViewById(R.id.etInternal);
|
etInternal = view.findViewById(R.id.etInternal);
|
||||||
btnUri = view.findViewById(R.id.btnUri);
|
btnUri = view.findViewById(R.id.btnUri);
|
||||||
tvUriInfo = view.findViewById(R.id.tvUriInfo);
|
tvUriInfo = view.findViewById(R.id.tvUriInfo);
|
||||||
|
@ -778,6 +780,7 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
args.putString("replyto", etReplyTo.getText().toString().trim());
|
args.putString("replyto", etReplyTo.getText().toString().trim());
|
||||||
args.putString("cc", etCc.getText().toString().trim());
|
args.putString("cc", etCc.getText().toString().trim());
|
||||||
args.putString("bcc", etBcc.getText().toString().trim());
|
args.putString("bcc", etBcc.getText().toString().trim());
|
||||||
|
args.putString("envelope_from", etEnvelopeFrom.getText().toString().trim());
|
||||||
args.putString("internal", etInternal.getText().toString().replaceAll(" ", ""));
|
args.putString("internal", etInternal.getText().toString().replaceAll(" ", ""));
|
||||||
args.putString("uri", (String) btnUri.getTag());
|
args.putString("uri", (String) btnUri.getTag());
|
||||||
args.putBoolean("sign_default", cbSignDefault.isChecked());
|
args.putBoolean("sign_default", cbSignDefault.isChecked());
|
||||||
|
@ -869,6 +872,7 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
String replyto = args.getString("replyto");
|
String replyto = args.getString("replyto");
|
||||||
String cc = args.getString("cc");
|
String cc = args.getString("cc");
|
||||||
String bcc = args.getString("bcc");
|
String bcc = args.getString("bcc");
|
||||||
|
String envelope_from = args.getString("envelope_from");
|
||||||
String internal = args.getString("internal");
|
String internal = args.getString("internal");
|
||||||
String uri = args.getString("uri");
|
String uri = args.getString("uri");
|
||||||
boolean sign_default = args.getBoolean("sign_default");
|
boolean sign_default = args.getBoolean("sign_default");
|
||||||
|
@ -932,6 +936,14 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
throw new IllegalArgumentException(context.getString(R.string.title_email_invalid, bcc));
|
throw new IllegalArgumentException(context.getString(R.string.title_email_invalid, bcc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!TextUtils.isEmpty(envelope_from) && !should)
|
||||||
|
try {
|
||||||
|
for (InternetAddress address : InternetAddress.parse(envelope_from))
|
||||||
|
address.validate();
|
||||||
|
} catch (AddressException ex) {
|
||||||
|
throw new IllegalArgumentException(context.getString(R.string.title_email_invalid, envelope_from));
|
||||||
|
}
|
||||||
|
|
||||||
if (TextUtils.isEmpty(internal))
|
if (TextUtils.isEmpty(internal))
|
||||||
internal = null;
|
internal = null;
|
||||||
|
|
||||||
|
@ -959,6 +971,9 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
if (TextUtils.isEmpty(bcc))
|
if (TextUtils.isEmpty(bcc))
|
||||||
bcc = null;
|
bcc = null;
|
||||||
|
|
||||||
|
if (TextUtils.isEmpty(envelope_from))
|
||||||
|
envelope_from = null;
|
||||||
|
|
||||||
if (color == Color.TRANSPARENT || !ActivityBilling.isPro(context))
|
if (color == Color.TRANSPARENT || !ActivityBilling.isPro(context))
|
||||||
color = null;
|
color = null;
|
||||||
if (TextUtils.isEmpty(signature))
|
if (TextUtils.isEmpty(signature))
|
||||||
|
@ -1036,6 +1051,8 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
return true;
|
return true;
|
||||||
if (!Objects.equals(identity.bcc, bcc))
|
if (!Objects.equals(identity.bcc, bcc))
|
||||||
return true;
|
return true;
|
||||||
|
if (!Objects.equals(identity.envelopeFrom, envelope_from))
|
||||||
|
return true;
|
||||||
if (!Objects.equals(identity.internal, internal))
|
if (!Objects.equals(identity.internal, internal))
|
||||||
return true;
|
return true;
|
||||||
if (!Objects.equals(identity.uri, uri))
|
if (!Objects.equals(identity.uri, uri))
|
||||||
|
@ -1150,6 +1167,7 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
identity.replyto = replyto;
|
identity.replyto = replyto;
|
||||||
identity.cc = cc;
|
identity.cc = cc;
|
||||||
identity.bcc = bcc;
|
identity.bcc = bcc;
|
||||||
|
identity.envelopeFrom = envelope_from;
|
||||||
identity.internal = internal;
|
identity.internal = internal;
|
||||||
identity.uri = uri;
|
identity.uri = uri;
|
||||||
identity.sign_default = sign_default;
|
identity.sign_default = sign_default;
|
||||||
|
@ -1343,6 +1361,7 @@ public class FragmentIdentity extends FragmentBase {
|
||||||
etReplyTo.setText(identity == null ? null : identity.replyto);
|
etReplyTo.setText(identity == null ? null : identity.replyto);
|
||||||
etCc.setText(identity == null ? null : identity.cc);
|
etCc.setText(identity == null ? null : identity.cc);
|
||||||
etBcc.setText(identity == null ? null : identity.bcc);
|
etBcc.setText(identity == null ? null : identity.bcc);
|
||||||
|
etEnvelopeFrom.setText(identity == null ? null : identity.envelopeFrom);
|
||||||
etInternal.setText(identity == null ? null : identity.internal);
|
etInternal.setText(identity == null ? null : identity.internal);
|
||||||
btnUri.setTag(identity == null ? null : identity.uri);
|
btnUri.setTag(identity == null ? null : identity.uri);
|
||||||
tvUriInfo.setText(identity == null ? null : getUriInfo(identity.uri));
|
tvUriInfo.setText(identity == null ? null : getUriInfo(identity.uri));
|
||||||
|
|
|
@ -833,6 +833,38 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/etBcc" />
|
app:layout_constraintTop_toBottomOf="@id/etBcc" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvEnvelopeFrom"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:text="@string/title_envelope_from"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tvBccHint" />
|
||||||
|
|
||||||
|
<eu.faircode.email.EditTextPlain
|
||||||
|
android:id="@+id/etEnvelopeFrom"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/title_optional"
|
||||||
|
android:importantForAutofill="no"
|
||||||
|
android:inputType="textEmailAddress"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tvEnvelopeFrom" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvEnvelopeFromHint"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/title_advanced_envelope_from_hint"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
|
android:textStyle="italic"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/etEnvelopeFrom" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvInternal"
|
android:id="@+id/tvInternal"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -841,7 +873,7 @@
|
||||||
android:text="@string/title_identity_internal"
|
android:text="@string/title_identity_internal"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/tvBccHint" />
|
app:layout_constraintTop_toBottomOf="@id/tvEnvelopeFromHint" />
|
||||||
|
|
||||||
<eu.faircode.email.EditTextPlain
|
<eu.faircode.email.EditTextPlain
|
||||||
android:id="@+id/etInternal"
|
android:id="@+id/etInternal"
|
||||||
|
@ -1160,6 +1192,7 @@
|
||||||
cbSynchronize,cbPrimary,cbSelf,tvSelfHint,
|
cbSynchronize,cbPrimary,cbSelf,tvSelfHint,
|
||||||
cbSenderExtra,cbSenderExtraName,cbReplyExtraName,tvSenderExtra,etSenderExtra,ibSenderExtra,tvSenderExtraHint,
|
cbSenderExtra,cbSenderExtraName,cbReplyExtraName,tvSenderExtra,etSenderExtra,ibSenderExtra,tvSenderExtraHint,
|
||||||
tvReplyTo,etReplyTo,tvCc,etCc,tvCcHint,tvBcc,etBcc,tvBccHint,
|
tvReplyTo,etReplyTo,tvCc,etCc,tvCcHint,tvBcc,etBcc,tvBccHint,
|
||||||
|
tvEnvelopeFrom,etEnvelopeFrom,tvEnvelopeFromHint,
|
||||||
tvInternal,etInternal,tvInternalHint,
|
tvInternal,etInternal,tvInternalHint,
|
||||||
btnUri,tvUriHint,tvUriInfo,tvUriPro,
|
btnUri,tvUriHint,tvUriInfo,tvUriPro,
|
||||||
tvE2Encryption,cbSignDefault,cbEncryptDefault,
|
tvE2Encryption,cbSignDefault,cbEncryptDefault,
|
||||||
|
|
|
@ -1085,6 +1085,7 @@
|
||||||
<string name="title_advanced_autoclose_hint">Automatically close conversations when all messages are archived, sent or trashed</string>
|
<string name="title_advanced_autoclose_hint">Automatically close conversations when all messages are archived, sent or trashed</string>
|
||||||
<string name="title_advanced_sender_hint">Most providers do not allow modified sender addresses</string>
|
<string name="title_advanced_sender_hint">Most providers do not allow modified sender addresses</string>
|
||||||
<string name="title_advanced_bcc_hint">The address won\'t be shown, but will be added on sending</string>
|
<string name="title_advanced_bcc_hint">The address won\'t be shown, but will be added on sending</string>
|
||||||
|
<string name="title_advanced_envelope_from_hint">This address will be used for SMTP MAIL FROM</string>
|
||||||
<string name="title_advanced_internal_hint">There will be a warning when sending to another domain</string>
|
<string name="title_advanced_internal_hint">There will be a warning when sending to another domain</string>
|
||||||
<string name="title_advanced_uri">The details of the selected contact will be used for vCard attachments</string>
|
<string name="title_advanced_uri">The details of the selected contact will be used for vCard attachments</string>
|
||||||
<string name="title_advanced_e2e_encryption">Options for end-to-end encryption</string>
|
<string name="title_advanced_e2e_encryption">Options for end-to-end encryption</string>
|
||||||
|
@ -1662,6 +1663,7 @@
|
||||||
<string name="title_reply_to">Reply to:</string>
|
<string name="title_reply_to">Reply to:</string>
|
||||||
<string name="title_cc">CC:</string>
|
<string name="title_cc">CC:</string>
|
||||||
<string name="title_bcc">BCC:</string>
|
<string name="title_bcc">BCC:</string>
|
||||||
|
<string name="title_envelope_from">Envelope from:</string>
|
||||||
<string name="title_recipients">%1$d recipients</string>
|
<string name="title_recipients">%1$d recipients</string>
|
||||||
<string name="title_via_identity">Via:</string>
|
<string name="title_via_identity">Via:</string>
|
||||||
<string name="title_sent">Sent:</string>
|
<string name="title_sent">Sent:</string>
|
||||||
|
|
Loading…
Reference in a new issue