title: javax.mail.nosuchproviderexception smtp
body: <p>I'm using the following code to send emails in my Android application:</p>
  
  <pre><code>    m_properties = new Properties();
      m_properties.put("mail.smtp.host", "smtp.gmail.com");
      m_properties.put("mail.smtp.socketFactory.port", "465");
      m_properties.put("mail.smtp.socketFactory.class",
                      "javax.net.ssl.SSLSocketFactory");
      m_properties.put("mail.smtp.auth", "true");
      m_properties.put("mail.smtp.port", "465");
  
      m_Session = Session.getDefaultInstance(m_properties,
                      new Authenticator() {
                          protected PasswordAuthentication getPasswordAuthentication() {
                              return new PasswordAuthentication(userName,
                                      passWord);
                          }
  
                      });
  
      m_simpleMessage = new MimeMessage(m_Session);
  
      m_fromAddress = new InternetAddress(userName);
      m_toAddress = new InternetAddress(eRecipient);
  
      m_simpleMessage.setFrom(m_fromAddress);
      m_simpleMessage.setRecipient(RecipientType.TO, m_toAddress);
      m_simpleMessage.setSubject(eSubject);
      m_simpleMessage.setContent(eBody, "text/plain");
  
      Transport.send(m_simpleMessage);
  </code></pre>
  
  <p>It works absolutely fine until I obfuscate my code. Emails then fail to send, throwing the error: <strong>javax.mail.nosuchproviderexception smtp</strong></p>
  
  <p>I've tried various set ups in my proguard.cfg such as: -keep class javax.mail.** { *; }</p>
  
  <p>But nothing works. If I turn off the obfuscation, it works fine again.</p>
  
  <p>Any ideas why this would be happening?</p>
  
  <p>Thanks in advance. </p>
  
  <p>EDIT: My Proguard config file</p>
  
  <pre><code>-dontusemixedcaseclassnames
  -dontskipnonpubliclibraryclasses
  -dontskipnonpubliclibraryclassmembers
  -verbose
  
  
  -libraryjars "C:\Program Files\Android\android-sdk\platforms\android-15\android.jar"
  -libraryjars "C:\Documents and Settingslibs\commons-io-2.4.jar"
  -libraryjars "C:\Documents and Settings\libs\mail.jar"
  -libraryjars "C:\Documents and Settingslibs\activation.jar"
  -libraryjars "C:\Documents and Settings\libs\additionnal.jar"
  -libraryjars "C:\Documents and Settings\libs\dropbox-android-sdk-1.3.1.jar"
  -libraryjars "C:\Documents and Settings\libs\microsoft-translator-java-api-0.6.1-jar-with-dependencies.jar"
  -libraryjars "C:\Documents and Settings\pingpongboss-StandOut-5c5cbe9\library\bin\standout.jar"
  -libraryjars "C:\Documents and Settings\android-uitableview\android-uitableview\bin\br_com_dina_ui.jar"
  
  -dontpreverify
  
  
  !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
  -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
  -optimizationpasses 5
  -allowaccessmodification
  
  -keep public class * extends android.app.Activity
  -keep public class * extends android.app.Application
  -keep public class * extends android.app.Service
  -keep public class com.android.vending.licensing.ILicensingService
  
  -keep public class * extends android.view.View {
      public &lt;init&gt;(android.content.Context);
      public &lt;init&gt;(android.content.Context, android.util.AttributeSet);
      public &lt;init&gt;(android.content.Context, android.util.AttributeSet, int);
      public void set*(...);
  }
  
  
  -keepclassmembers class * extends android.app.Activity {
     public void *(android.view.View);
  }
  
  
  -keepclassmembers enum * {
      public static **[] values();
      public static ** valueOf(java.lang.String);
  }
  
  -keep public class com.winterwell.jgeoplanet.** {
    public protected *;
  }
  
  -keep public class winterwell.jwitter.** {
    public protected *;
  }
  
  -keep public class winterwell.json.** {
    public protected *;
  }
  
  -keep class com.winterwell.** { *; }
  
  -keep class winterwell.** { *; }
  
  -keep class com.faceture.google.** { *; }
  -keep class com.faceture.google.play.** { *; }
  -keep class com.faceture.google.play.domain.** { *; }
  -keep class com.faceture.http.** { *; }
  -keep class com.faceture.rest.** { *; }
  -keep class com.faceture.google.gson.** { *; }
  -keep class com.google.gson.** { *; }
  
  
  -dontwarn android.support.**
  -dontwarn org.apache.commons.codec.binary.**
  -dontwarn org.apache.harmony.awt.**
  -dontwarn javax.activation.**
  -dontwarn com.sun.mail.imap.protocol.**
  
  -keepattributes Signature
  
  -keepattributes *Annotation*
  
  
  -keep class sun.misc.Unsafe { *; }
  
  -keep class com.google.gson.examples.android.model.** { *; }
  </code></pre>
  
  <hr>
  
  <p>The warnings are removed above due to these errors:</p>
  
  <pre><code>Warning: javax.activation.CommandInfo: can't find referenced class java.beans.Beans
  Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.Sasl
  + can't find referenced class javax.security.sasl.SaslClient
  + can't find referenced class javax.security.sasl.SaslException
  + can't find referenced class javax.security.auth.callback.NameCallback
  + can't find referenced class javax.security.sasl.RealmCallback
  </code></pre>