PowerBuilder
PowerBuilder
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 PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Imap
integer li_SshPort
string ls_SshPassword
li_Success = 0
// 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.
loo_Imap = create oleobject
li_rc = loo_Imap.ConnectToNewObject("Chilkat.Imap")
if li_rc < 0 then
destroy loo_Imap
MessageBox("Error","Connecting to COM object failed")
return
end if
li_SshPort = 22
li_Success = loo_Imap.SshOpenTunnel("ssh.example.com",li_SshPort)
if li_Success = 0 then
Write-Debug loo_Imap.LastErrorText
destroy loo_Imap
return
end if
// 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.
li_Success = loo_Imap.SshAuthenticatePw("sshUser",ls_SshPassword)
if li_Success = 0 then
Write-Debug loo_Imap.LastErrorText
destroy loo_Imap
return
end if
// With the SSH tunnel in place, connect and log in to the IMAP server as usual. The IMAP
// traffic flows through the tunnel automatically.
loo_Imap.Ssl = 1
loo_Imap.Port = 993
li_Success = loo_Imap.Connect("imap.example.com")
if li_Success = 0 then
Write-Debug loo_Imap.LastErrorText
destroy loo_Imap
return
end if
li_Success = loo_Imap.Login("user@example.com","myPassword")
if li_Success = 0 then
Write-Debug loo_Imap.LastErrorText
destroy loo_Imap
return
end if
// ... use the IMAP connection ...
li_Success = loo_Imap.Disconnect()
if li_Success = 0 then
Write-Debug loo_Imap.LastErrorText
destroy loo_Imap
return
end if
// Close the SSH tunnel. Do not use the IMAP connection after this point.
li_Success = loo_Imap.SshCloseTunnel()
if li_Success = 0 then
Write-Debug loo_Imap.LastErrorText
destroy loo_Imap
return
end if
destroy loo_Imap