|
|
@ -210,37 +210,31 @@ public class EmailProvider {
|
|
|
|
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
@NonNull
|
|
|
|
private static EmailProvider fromISPDB(Context context, String domain) throws IOException, XmlPullParserException {
|
|
|
|
private static EmailProvider fromISPDB(Context context, String domain) throws IOException, XmlPullParserException {
|
|
|
|
EmailProvider provider = new EmailProvider(domain);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// https://wiki.mozilla.org/Thunderbird:Autoconfiguration
|
|
|
|
// https://wiki.mozilla.org/Thunderbird:Autoconfiguration
|
|
|
|
HttpURLConnection request;
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
URL url = new URL("https://autoconfig." + domain + "/mail/config-v1.1.xml?emailaddress=someone@" + domain);
|
|
|
|
URL url = new URL("https://autoconfig." + domain + "/mail/config-v1.1.xml?emailaddress=someone@" + domain);
|
|
|
|
Log.i("Fetching " + url);
|
|
|
|
return getISPDB(domain, url);
|
|
|
|
|
|
|
|
} catch (Throwable ex) {
|
|
|
|
|
|
|
|
Log.w(ex);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
request = (HttpURLConnection) url.openConnection();
|
|
|
|
|
|
|
|
request.setReadTimeout(ISPDB_TIMEOUT);
|
|
|
|
|
|
|
|
request.setConnectTimeout(ISPDB_TIMEOUT);
|
|
|
|
|
|
|
|
request.setRequestMethod("GET");
|
|
|
|
|
|
|
|
request.setDoInput(true);
|
|
|
|
|
|
|
|
request.connect();
|
|
|
|
|
|
|
|
} catch (IOException ex1) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
Log.w(ex1.getMessage());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
URL url = new URL("https://" + domain + "/.well-known/autoconfig/mail/config-v1.1.xml");
|
|
|
|
URL url = new URL("https://" + domain + "/.well-known/autoconfig/mail/config-v1.1.xml");
|
|
|
|
Log.i("Fetching " + url);
|
|
|
|
return getISPDB(domain, url);
|
|
|
|
|
|
|
|
} catch (Throwable ex) {
|
|
|
|
request = (HttpURLConnection) url.openConnection();
|
|
|
|
Log.w(ex);
|
|
|
|
request.setReadTimeout(ISPDB_TIMEOUT);
|
|
|
|
}
|
|
|
|
request.setConnectTimeout(ISPDB_TIMEOUT);
|
|
|
|
|
|
|
|
request.setRequestMethod("GET");
|
|
|
|
|
|
|
|
request.setDoInput(true);
|
|
|
|
|
|
|
|
request.connect();
|
|
|
|
|
|
|
|
} catch (IOException ex2) {
|
|
|
|
|
|
|
|
Log.w(ex2.getMessage());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
URL url = new URL("https://autoconfig.thunderbird.net/v1.1/" + domain);
|
|
|
|
URL url = new URL("https://autoconfig.thunderbird.net/v1.1/" + domain);
|
|
|
|
|
|
|
|
return getISPDB(domain, url);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
|
|
|
|
private static EmailProvider getISPDB(String domain, URL url) throws IOException, XmlPullParserException {
|
|
|
|
|
|
|
|
EmailProvider provider = new EmailProvider(domain);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HttpURLConnection request = null;
|
|
|
|
|
|
|
|
try {
|
|
|
|
Log.i("Fetching " + url);
|
|
|
|
Log.i("Fetching " + url);
|
|
|
|
|
|
|
|
|
|
|
|
request = (HttpURLConnection) url.openConnection();
|
|
|
|
request = (HttpURLConnection) url.openConnection();
|
|
|
@ -249,10 +243,7 @@ public class EmailProvider {
|
|
|
|
request.setRequestMethod("GET");
|
|
|
|
request.setRequestMethod("GET");
|
|
|
|
request.setDoInput(true);
|
|
|
|
request.setDoInput(true);
|
|
|
|
request.connect();
|
|
|
|
request.connect();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser
|
|
|
|
// https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser
|
|
|
|
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
|
|
|
|
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
|
|
|
|
XmlPullParser xml = factory.newPullParser();
|
|
|
|
XmlPullParser xml = factory.newPullParser();
|
|
|
@ -408,9 +399,6 @@ public class EmailProvider {
|
|
|
|
|
|
|
|
|
|
|
|
eventType = xml.next();
|
|
|
|
eventType = xml.next();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
request.disconnect();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Log.i("imap=" + provider.imap.host + ":" + provider.imap.port + ":" + provider.imap.starttls);
|
|
|
|
Log.i("imap=" + provider.imap.host + ":" + provider.imap.port + ":" + provider.imap.starttls);
|
|
|
|
Log.i("smtp=" + provider.smtp.host + ":" + provider.smtp.port + ":" + provider.smtp.starttls);
|
|
|
|
Log.i("smtp=" + provider.smtp.host + ":" + provider.smtp.port + ":" + provider.smtp.starttls);
|
|
|
@ -418,6 +406,10 @@ public class EmailProvider {
|
|
|
|
provider.checkValid();
|
|
|
|
provider.checkValid();
|
|
|
|
|
|
|
|
|
|
|
|
return provider;
|
|
|
|
return provider;
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
if (request != null)
|
|
|
|
|
|
|
|
request.disconnect();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
@NonNull
|
|
|
|