Added setup help

pull/145/head
M66B 6 years ago
parent cc31a5fd31
commit 34d188d257

@ -0,0 +1,55 @@
# Setup help
Mostly setting up FairEmail is fairly simple.
You'll need to add at least one account to receive email and at least one identity if you want to send email.
## Requirements
An internet connection is required to add accounts and identities.
Your email provider should support IMAP with the IDLE and UIDPLUS extensions.
All up-to-date email providers do, with as notable exception Yahoo!
IMAP IDLE is required to limit battery usage,
see [this FAQ](https://github.com/M66B/open-source-email/blob/master/FAQ.md#FAQ5) for more details.
Your email provider should support secure connections.
If your provider doesn't support secure connections and you care at least a little about your privacy,
you are strongly advised to switch to another provider.
For security reasons, your account need to have a non empty password set.
## Account
To add an account, tap on *Manage accounts* and tap on the orange *add* button at the bottom.
Select a provider from the list, enter the username, which is mostly your email address and enter your password.
If you use Gmail, tap *Select account* to fill in the username and password.
Tap *Check* to let FairEmail connect to the email server and fetch a list of system folders.
After reviewing the system folder selection you can add the account by tapping *Save*.
If your provider is not in the list of providers, select *Custom*.
Enter the domain name, for example *gmail.com* and tap *Get settings*.
If your provider supports [auto-discovery](https://tools.ietf.org/html/rfc6186), FairEmail will fill in the host name and port number,
else check the setup instructions of your provider for the right IMAP host name and port number.
## Identity
Similarly, to add an identity, tap on *Manage identity* and tap on the orange *add* button at the bottom.
Enter the name you want to appear in de from address of the emails you send and select a linked account.
Tap *Save* to add the identity.
See [this FAQ](https://github.com/M66B/open-source-email/blob/master/FAQ.md#FAQ9) about using aliases.
## Permissions
If you want to lookup email addresses, have contact photos shown, etc, you'll need to grant read contacts permission to FairEmail.
Just tap *Grant permissions* and select *Allow*.
## Battery optimizations
On recent Android versions, Android will put apps to sleep when the screen is off for some time to reduce battery usage.
If you want to receive new emails without delays, you should disable battery optimizations for FairEmail.
Tap *Disable battery optimizations* and follow the instructions.
## Questions
If you have a question or problem, please [see here](https://github.com/M66B/open-source-email/blob/master/FAQ.md).

@ -45,6 +45,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.TextView; import android.widget.TextView;
import android.widget.ToggleButton; import android.widget.ToggleButton;
@ -74,6 +75,8 @@ import static android.app.Activity.RESULT_OK;
public class FragmentSetup extends FragmentEx { public class FragmentSetup extends FragmentEx {
private ViewGroup view; private ViewGroup view;
private ImageButton ibHelp;
private Button btnAccount; private Button btnAccount;
private TextView tvAccountDone; private TextView tvAccountDone;
@ -116,6 +119,8 @@ public class FragmentSetup extends FragmentEx {
view = (ViewGroup) inflater.inflate(R.layout.fragment_setup, container, false); view = (ViewGroup) inflater.inflate(R.layout.fragment_setup, container, false);
// Get controls // Get controls
ibHelp = view.findViewById(R.id.ibHelp);
btnAccount = view.findViewById(R.id.btnAccount); btnAccount = view.findViewById(R.id.btnAccount);
tvAccountDone = view.findViewById(R.id.tvAccountDone); tvAccountDone = view.findViewById(R.id.tvAccountDone);
@ -135,6 +140,13 @@ public class FragmentSetup extends FragmentEx {
// Wire controls // Wire controls
ibHelp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(getIntentHelp());
}
});
btnAccount.setOnClickListener(new View.OnClickListener() { btnAccount.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@ -230,6 +242,7 @@ public class FragmentSetup extends FragmentEx {
}); });
// Initialize // Initialize
ibHelp.setVisibility(View.GONE);
tvAccountDone.setText(null); tvAccountDone.setText(null);
tvAccountDone.setCompoundDrawables(null, null, null, null); tvAccountDone.setCompoundDrawables(null, null, null, null);
@ -292,6 +305,9 @@ public class FragmentSetup extends FragmentEx {
public void onActivityCreated(@Nullable Bundle savedInstanceState) { public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
PackageManager pm = getContext().getPackageManager();
ibHelp.setVisibility(getIntentHelp().resolveActivity(pm) == null ? View.GONE : View.VISIBLE);
DB db = DB.getInstance(getContext()); DB db = DB.getInstance(getContext());
db.account().liveAccounts(true).observe(getViewLifecycleOwner(), new Observer<List<EntityAccount>>() { db.account().liveAccounts(true).observe(getViewLifecycleOwner(), new Observer<List<EntityAccount>>() {
@ -395,6 +411,12 @@ public class FragmentSetup extends FragmentEx {
} }
} }
private Intent getIntentHelp() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://github.com/M66B/open-source-email/blob/master/SETUP.md"));
return intent;
}
private static Intent getIntentExport() { private static Intent getIntentExport() {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE); intent.addCategory(Intent.CATEGORY_OPENABLE);

@ -13,6 +13,15 @@
<!-- account --> <!-- account -->
<ImageButton
android:id="@+id/ibHelp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:src="@drawable/baseline_help_24"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button <Button
android:id="@+id/btnAccount" android:id="@+id/btnAccount"
android:layout_width="wrap_content" android:layout_width="wrap_content"

Loading…
Cancel
Save