Visual FoxPro
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
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