Sample code for 30+ languages & platforms
Visual FoxPro

POP3 to SMTP Forwarder

Read a POP3 mailbox and forwards the email to another email address, keeping the recipients in the original email the same.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loMailman
LOCAL lcFromAddr
LOCAL lcToAddr
LOCAL loStUidls
LOCAL loBdMime
LOCAL lnCount
LOCAL i
LOCAL lcUidl

lnSuccess = 0

* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

loMailman = CreateObject('Chilkat.MailMan')

* Set the POP3 server's hostname
loMailman.MailHost = "pop.example.com"

* Set the POP3 login/password.
loMailman.PopUsername = "MY_POP3_LOGIN"
loMailman.PopPassword = "MY_POP3_PASSWORD"

* Set the SMTP hostname for sending.
loMailman.SmtpHost = "smtp.example.com"
loMailman.SmtpUsername = "MY_SMTP_LOGIN"
loMailman.SmtpPassword = "MY_SMTP_PASSWORD"

lcFromAddr = "me@example.com"
lcToAddr = "recipient@somewhere.com"

* The the UIDLs for all email in the POP3 mailbox.
loStUidls = CreateObject('Chilkat.StringTable')
lnSuccess = loMailman.FetchUidls(loStUidls)
IF (lnSuccess = 0) THEN
    ? loMailman.LastErrorText
    RELEASE loMailman
    RELEASE loStUidls
    CANCEL
ENDIF

* Just mark messages for delete, then delete at the end.
loMailman.ImmediateDelete = 0

* Download the email from the server.  Call FetchMimeBd
* because we don't want to load the emails into email objects.
* (We'll delete the emails that are forwarded without error.)
loBdMime = CreateObject('Chilkat.BinData')

lnCount = loStUidls.Count
i = 0
DO WHILE i < lnCount
    lcUidl = loStUidls.StringAt(i)
    ? "UIDL: " + lcUidl

    lnSuccess = loMailman.FetchMimeBd(lcUidl,loBdMime)
    IF (lnSuccess = 0) THEN
        ? loMailman.LastErrorText
        RELEASE loMailman
        RELEASE loStUidls
        RELEASE loBdMime
        CANCEL
    ENDIF

    lnSuccess = loMailman.SendMimeBd(lcFromAddr,lcToAddr,loBdMime)
    IF (lnSuccess = 0) THEN
        ? loMailman.LastErrorText
        RELEASE loMailman
        RELEASE loStUidls
        RELEASE loBdMime
        CANCEL
    ENDIF

    lnSuccess = loMailman.DeleteByUidl(lcUidl)
    IF (lnSuccess = 0) THEN
        ? loMailman.LastErrorText
        RELEASE loMailman
        RELEASE loStUidls
        RELEASE loBdMime
        CANCEL
    ENDIF

    i = i + 1
ENDDO

* Delete messages marked for delete.
loMailman.ImmediateDelete = 1
lnSuccess = loMailman.Pop3EndSession()
IF (lnSuccess = 0) THEN
    ? loMailman.LastErrorText
    RELEASE loMailman
    RELEASE loStUidls
    RELEASE loBdMime
    CANCEL
ENDIF

? "Success."

RELEASE loMailman
RELEASE loStUidls
RELEASE loBdMime