From 35159f986573795bb80bfc774fd269a40e796c28 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 22 Feb 2019 17:34:12 +0100 Subject: [PATCH] Fixed IPv6 SMTP EHLO --- app/src/main/java/eu/faircode/email/FragmentIdentity.java | 8 +++++--- app/src/main/java/eu/faircode/email/Helper.java | 5 +++-- .../main/java/eu/faircode/email/ServiceSynchronize.java | 8 +++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index f4f5cd0454..f5792d5037 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -52,6 +52,7 @@ import com.android.colorpicker.ColorPickerSwatch; import com.google.android.material.snackbar.Snackbar; import com.google.android.material.textfield.TextInputLayout; +import java.net.Inet6Address; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; @@ -603,11 +604,12 @@ public class FragmentIdentity extends FragmentBase { else props.put("mail.smtps.localhost", host); } else { - Log.i("Check local address=" + ip.getHostAddress()); + String haddr = (ip instanceof Inet6Address ? "IPv6:" : "") + ip.getHostAddress(); + Log.i("Check local address=" + haddr); if (starttls) - props.put("mail.smtp.localaddress", ip.getHostAddress()); + props.put("mail.smtp.localaddress", haddr); else - props.put("mail.smtps.localaddress", ip.getHostAddress()); + props.put("mail.smtps.localaddress", haddr); } // Create session diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index b787caf649..e5e07ddeac 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -76,6 +76,7 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.Inet4Address; import java.net.InetAddress; +import java.net.UnknownHostException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.DateFormat; @@ -735,11 +736,11 @@ public class Helper { return filename.substring(index + 1); } - static InetAddress getLocalIp(Context context) { + static InetAddress getLocalIp(Context context) throws UnknownHostException { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M) - return null; + return InetAddress.getLocalHost(); Network active = cm.getActiveNetwork(); if (active == null) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index e2758d9ef6..6a7a5bf0a3 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -73,6 +73,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.Inet6Address; import java.net.InetAddress; import java.net.SocketException; import java.net.SocketTimeoutException; @@ -1947,11 +1948,12 @@ public class ServiceSynchronize extends LifecycleService { else props.put("mail.smtps.localhost", ident.host); } else { - EntityLog.log(ServiceSynchronize.this, "Send local address=" + ip.getHostAddress()); + String haddr = (ip instanceof Inet6Address ? "IPv6:" : "") + ip.getHostAddress(); + EntityLog.log(ServiceSynchronize.this, "Send local address=" + haddr); if (ident.starttls) - props.put("mail.smtp.localaddress", ip.getHostAddress()); + props.put("mail.smtp.localaddress", haddr); else - props.put("mail.smtps.localaddress", ip.getHostAddress()); + props.put("mail.smtps.localaddress", haddr); } // Create session