Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) POP3 SSH Tunneling (Port Forwarding)Demonstrates how to connect to a POP3 server through an SSH tunnel. Reads a POP3 mailbox and display the FROM and SUBJECT header fields of each email.
LOCAL loMailman LOCAL lcSshHostname LOCAL lnSshPort LOCAL lnSuccess LOCAL lnNumToDownload LOCAL i LOCAL loEmail * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * The mailman object is used for receiving (POP3) * and sending (SMTP) email. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.MailMan') loMailman = CreateObject('Chilkat.MailMan') * The SSH hostname may be a hostname or an * IP address, such as "192.168.1.108". * The port is typically 22 (the standard port for SSH). lcSshHostname = "sftp.example.com" lnSshPort = 22 * Connect to an SSH server and establish the SSH tunnel: lnSuccess = loMailman.SshOpenTunnel(lcSshHostname,lnSshPort) IF (lnSuccess <> 1) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF * Authenticate with the SSH server via a login/password * or with a public key. * This example demonstrates SSH password authentication. * Note: This is not authenticating with the POP3 server, it is * for authenticating with the SSH server, which is separate. lnSuccess = loMailman.SshAuthenticatePw("ssh_login","ssh_password") IF (lnSuccess <> 1) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF * OK, the SSH tunnel is setup. The mailman may * be used exactly the same as usual, except all communications * are now sent through the SSH tunnel. * The SSH tunnel may be kept open for any number of * POP3 connections. * Set the POP3 server's hostname loMailman.MailHost = "mail.my-pop3-server.com" * Set the POP3 settings for your POP3 server: loMailman.PopUsername = "pop3_login" loMailman.PopPassword = "pop3_password" loMailman.MailPort = 995 loMailman.PopSsl = 1 * Connect to the POP3 server through the already-established SSH tunnel: lnSuccess = loMailman.Pop3BeginSession() IF (lnSuccess <> 1) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF * A visual inspection of the LastErrorText after * a successful POP3 connection will confirm the SSH tunneling. * Note: If the POP3 connection uses SSL/TLS, then the SSL/TLS * secure channel will be wrapped within the SSH tunnel. ? loMailman.LastErrorText * How many messages are in the POP3 inbox? lnNumToDownload = loMailman.GetMailboxCount() IF (lnNumToDownload > 5) THEN lnNumToDownload = 5 ENDIF IF (lnNumToDownload = 0) THEN RELEASE loMailman CANCEL ENDIF * Download a max of 5 messages FOR i = 1 TO lnNumToDownload loEmail = loMailman.FetchByMsgnum(i) IF (loMailman.LastMethodSuccess = 0) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF ? loEmail.From ? loEmail.Subject ? "----" RELEASE loEmail NEXT * Close the connection with the POP3 server, leaving the SSH tunnel open for subsequent POP3 connections. lnSuccess = loMailman.Pop3EndSession() IF (lnSuccess <> 1) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF * Try connecting to a different POP3 server through the same aleady setup SSH tunnel: * Set the POP3 server's hostname loMailman.MailHost = "mail.my-pop3-server2.com" * Set the POP3 settings for your POP3 server: loMailman.PopUsername = "pop3_login2" loMailman.PopPassword = "pop3_password2" loMailman.MailPort = 110 loMailman.PopSsl = 0 lnSuccess = loMailman.Pop3BeginSession() IF (lnSuccess <> 1) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF * Review the LastErrorText to see that the connection was made via the SSH tunnel: ? loMailman.LastErrorText lnSuccess = loMailman.Pop3EndSession() IF (lnSuccess <> 1) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF * Close the SSH tunnel. lnSuccess = loMailman.SshCloseTunnel() IF (lnSuccess <> 1) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF RELEASE loMailman |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.