diff options
| author | Jon Starling <jstarling@star.net.uk> | 2011-06-23 19:08:28 +0100 |
|---|---|---|
| committer | Tom Giordano <tomgiordano83@gmail.com> | 2011-09-01 01:11:26 +1000 |
| commit | 3615722acdc16e11e2ebd63c7e21bf42a35c38ee (patch) | |
| tree | d369adb8131a5de02e15da820750d48022b24a43 | |
| parent | 6fc9f0e1dff06dbd0d3b6e8804826481635b6564 (diff) | |
| download | android_packages_apps_Email-3615722acdc16e11e2ebd63c7e21bf42a35c38ee.tar.gz android_packages_apps_Email-3615722acdc16e11e2ebd63c7e21bf42a35c38ee.tar.bz2 android_packages_apps_Email-3615722acdc16e11e2ebd63c7e21bf42a35c38ee.zip | |
SmtpSender: Send EHLO that adheres to RFC2821
Adhere to RFC2821 Sec. 4.1.3 Address Literals should be enclosed by brackets and
prefixed with 'IPv6:' if the sender is an IPv6 host
| -rw-r--r-- | src/com/android/email/mail/transport/SmtpSender.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/com/android/email/mail/transport/SmtpSender.java b/src/com/android/email/mail/transport/SmtpSender.java index 8f72631f8..af6b28273 100644 --- a/src/com/android/email/mail/transport/SmtpSender.java +++ b/src/com/android/email/mail/transport/SmtpSender.java @@ -31,7 +31,9 @@ import android.util.Log; import android.util.Base64; import java.io.IOException; +import java.lang.StringBuilder; import java.net.InetAddress; +import java.net.Inet6Address; import java.net.URI; import java.net.URISyntaxException; @@ -123,7 +125,18 @@ public class SmtpSender extends Sender { // Try to get local address in the X.X.X.X format. InetAddress localAddress = mTransport.getLocalAddress(); if (localAddress != null) { - localHost = localAddress.getHostAddress(); + /* + * Address Literal + * formatted in accordance to RFC2821 Sec. 4.1.3 + */ + StringBuilder sb = new StringBuilder(); + sb.append('['); + if (localAddress instanceof Inet6Address) { + sb.append("IPv6:"); + } + sb.append(localAddress.getHostAddress()); + sb.append(']'); + localHost = sb.toString(); } String result = executeSimpleCommand("EHLO " + localHost); |
