title: Cannot resolve method session.getDefaultInstance()
body: <p>I am trying to write automailsending code. Here, I am getting an error: Cannot resolve method 'getDefaultInstance(java.util.Properties, com.example.automailsendinganika.Sender)' in this line : session = Session.getDefaultInstance(props, this);</p>
  
  <p>this is my Sender class:</p>
  
  <hr>
  
  <pre><code>class Sender  extends javax.mail.Authenticator {
  
      private String mailhost = "smtp.gmail.com";
      private String user;
      private String password;
      private Session session;
  
      static {
          Security.addProvider(new com.provider.JSSEProvider());
      }
  
      public Sender(String user, String password) {
          this.user = user;
          this.password = password;
  
          Properties props = new Properties();
          props.setProperty("mail.transport.protocol", "smtp");
          props.setProperty("mail.host", mailhost);
          props.put("mail.smtp.auth", "true");
          props.put("mail.smtp.port", "465");
          props.put("mail.smtp.socketFactory.port", "465");
          props.put("mail.smtp.socketFactory.class",
                  "javax.net.ssl.SSLSocketFactory");
          props.put("mail.smtp.socketFactory.fallback", "false");
          props.setProperty("mail.smtp.quitwait", "false");
  
          session = Session.getDefaultInstance(props, this);
      }
  
      protected PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(user, password);
      }
  
      public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
          try{
              MimeMessage message = new MimeMessage(session);
              DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
              message.setSender(new InternetAddress(sender));
              message.setSubject(subject);
              message.setDataHandler(handler);
              if (recipients.indexOf(',') &gt; 0)
                  message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
              else
                  message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
              Transport.send(message);
              Log.e("SEND ","SEND");
          }catch(Exception e){
              Log.e("ERROR ","ERROR");
              e.printStackTrace();
          }
      }
  
      public class ByteArrayDataSource implements DataSource {
          private byte[] data;
          private String type;
  
          public ByteArrayDataSource(byte[] data, String type) {
              super();
              this.data = data;
              this.type = type;
          }
  
          public ByteArrayDataSource(byte[] data) {
              super();
              this.data = data;
          }
  
          public void setType(String type) {
              this.type = type;
          }
  
          public String getContentType() {
              if (type == null)
                  return "application/octet-stream";
              else
                  return type;
          }
  
          public InputStream getInputStream() throws IOException {
              return new ByteArrayInputStream(data);
          }
  
          public String getName() {
              return "ByteArrayDataSource";
          }
  
          public OutputStream getOutputStream() throws IOException {
              throw new IOException("Not Supported");
          }
      }
  }
  
  </code></pre>