diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 8221538d0d..6080a87632 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -399,7 +399,7 @@ public class FragmentSetup extends FragmentEx { account.notify = false; account.browse = true; account.poll_interval = 19; - account.prefix = provider.prefix; // TODO + account.prefix = provider.prefix; account.created = now; account.error = null; diff --git a/app/src/main/java/eu/faircode/email/Provider.java b/app/src/main/java/eu/faircode/email/Provider.java index 719e0949f6..42baad9c10 100644 --- a/app/src/main/java/eu/faircode/email/Provider.java +++ b/app/src/main/java/eu/faircode/email/Provider.java @@ -143,13 +143,6 @@ public class Provider { private static Provider fromISPDB(Context context, String domain) throws IOException, XmlPullParserException { Provider provider = new Provider(domain); - if ("gmail.com".equals(domain)) { - provider.documentation = new StringBuilder(); - provider.documentation - .append("") - .append(context.getString(R.string.title_setup_setting_gmail)) - .append(""); - } // https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat URL url = new URL("https://autoconfig.thunderbird.net/v1.1/" + domain); @@ -308,15 +301,7 @@ public class Provider { if (href != null) { if (title == null) title = href; - - if (provider.documentation == null) - provider.documentation = new StringBuilder(); - else - provider.documentation.append("

"); - - provider.documentation - .append("").append(title).append(""); - + addDocumentation(provider, href, title); href = null; title = null; } @@ -330,7 +315,8 @@ public class Provider { Log.i("imap=" + provider.imap_host + ":" + provider.imap_port + ":" + provider.imap_starttls); Log.i("smtp=" + provider.smtp_host + ":" + provider.smtp_port + ":" + provider.smtp_starttls); - return provider; + + return addSpecials(context, provider); } private static Provider fromDNS(Context context, String domain) throws TextParseException, UnknownHostException { @@ -347,6 +333,30 @@ public class Provider { provider.smtp_port = smtp.getPort(); provider.smtp_starttls = (provider.smtp_port == 587); + return addSpecials(context, provider); + } + + private static void addDocumentation(Provider provider, String href, String title) { + if (provider.documentation == null) + provider.documentation = new StringBuilder(); + else + provider.documentation.append("

"); + + provider.documentation.append("").append(title).append(""); + } + + private static Provider addSpecials(Context context, Provider provider) { + for (Provider predefined : loadProfiles(context)) + if (provider.imap_host.equals(predefined.imap_host)) { + provider.prefix = predefined.prefix; + break; + } + + if ("imap.gmail.com".equals(provider.imap_host)) + addDocumentation(provider, + "https://www.google.com/settings/security/lesssecureapps", + context.getString(R.string.title_setup_setting_gmail)); + return provider; } @@ -358,16 +368,18 @@ public class Provider { lookup.setResolver(resolver); Log.i("Lookup dns=" + dns + " @" + resolver.getAddress()); Record[] records = lookup.run(); + if (lookup.getResult() != Lookup.SUCCESSFUL) if (lookup.getResult() == Lookup.HOST_NOT_FOUND) throw new UnknownHostException(dns); else throw new IllegalArgumentException(lookup.getErrorString()); + Log.i("Found dns=" + (records == null ? -1 : records.length)); return (records == null || records.length == 0 ? null : (SRVRecord) records[0]); } - public int getAuthType() { + int getAuthType() { if ("com.google".equals(type)) return Helper.AUTH_TYPE_GMAIL; return Helper.AUTH_TYPE_PASSWORD;