Sample code for 30+ languages & platforms
Android™

Close an IMAP SSH Tunnel

See more IMAP Examples

Demonstrates the Chilkat Imap.SshCloseTunnel method, which closes the SSH tunnel opened by SshOpenTunnel. It takes no arguments. Any IMAP connection that was using the tunnel must not be used after the tunnel is closed.

Background: The SSH tunnel is the transport that carries the IMAP session, so closing it tears down that transport. Disconnect or finish with the IMAP connection first, then close the tunnel to release the SSH resources cleanly. Continuing to use an IMAP connection whose tunnel has been closed will fail.

Chilkat Android™ Downloads

Android™
// Important: Don't forget to include the call to System.loadLibrary
// as shown at the bottom of this code sample.
package com.test;

import android.app.Activity;
import com.chilkatsoft.*;

import android.widget.TextView;
import android.os.Bundle;

public class SimpleActivity extends Activity {

  private static final String TAG = "Chilkat";

  // Called when the activity is first created.
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    boolean success = false;

    //  Demonstrates the Imap.SshCloseTunnel method, which closes the SSH tunnel opened by
    //  SshOpenTunnel.  It takes no arguments.  Any IMAP connection using the tunnel must not be
    //  used after the tunnel is closed.

    CkImap imap = new CkImap();

    int sshPort = 22;
    success = imap.SshOpenTunnel("ssh.example.com",sshPort);
    if (success == false) {
        Log.i(TAG, imap.lastErrorText());
        return;
        }

    //  The SSH password is not hard-coded in source.  Insert code here to obtain it from an
    //  interactive prompt, environment variable, or a secrets vault.
    String sshPassword;

    success = imap.SshAuthenticatePw("sshUser",sshPassword);
    if (success == false) {
        Log.i(TAG, imap.lastErrorText());
        return;
        }

    //  With the SSH tunnel in place, connect and log in to the IMAP server as usual.  The IMAP
    //  traffic flows through the tunnel automatically.
    imap.put_Ssl(true);
    imap.put_Port(993);
    success = imap.Connect("imap.example.com");
    if (success == false) {
        Log.i(TAG, imap.lastErrorText());
        return;
        }

    success = imap.Login("user@example.com","myPassword");
    if (success == false) {
        Log.i(TAG, imap.lastErrorText());
        return;
        }

    //  ... use the IMAP connection ...

    success = imap.Disconnect();
    if (success == false) {
        Log.i(TAG, imap.lastErrorText());
        return;
        }

    //  Close the SSH tunnel.  Do not use the IMAP connection after this point.
    success = imap.SshCloseTunnel();
    if (success == false) {
        Log.i(TAG, imap.lastErrorText());
        return;
        }


  }

  static {
      System.loadLibrary("chilkat");

      // Note: If the incorrect library name is passed to System.loadLibrary,
      // then you will see the following error message at application startup:
      //"The application <your-application-name> has stopped unexpectedly. Please try again."
  }
}