Sample code for 30+ languages & platforms
Visual FoxPro

Forward an Email using CreateForward

See more Email Object Examples

Reads an email from an IMAP server, creates a forward version of the email using the CreateForward method, and sends the email to another recipient.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loImap
LOCAL lnNumEmails
LOCAL loEmail
LOCAL loEForward
LOCAL loSbHtmlBody
LOCAL loSbPtBody
LOCAL loMailman

lnSuccess = 0

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

* Read the 1st (most recent) email in an Inbox.
loImap = CreateObject('Chilkat.Imap')

* Connect to an IMAP server.
loImap.Ssl = 1
loImap.Port = 993
lnSuccess = loImap.Connect("imap.example.com")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Login
lnSuccess = loImap.Login("myLogin","myPassword")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Select an IMAP mailbox
lnSuccess = loImap.SelectMailbox("Inbox")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

lnNumEmails = loImap.NumMessages

* Fetch the email at the last sequence number.
* (We are assuming the Inbox has at least 1 email)

loEmail = CreateObject('Chilkat.Email')
lnSuccess = loImap.FetchEmail(0,lnNumEmails,0,loEmail)
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loEmail
    CANCEL
ENDIF

* Disconnect from the IMAP server.
loImap.Disconnect()

? loEmail.Subject

loEForward = CreateObject('Chilkat.Email')
lnSuccess = loEmail.ToForward(loEForward)
IF (lnSuccess = 0) THEN
    ? loEmail.LastErrorText
    RELEASE loImap
    RELEASE loEmail
    RELEASE loEForward
    CANCEL
ENDIF

* The eForward email has no To or CC recipients yet.
* Add one or more..
loEForward.AddTo("Joe","joe@example.com")

* We also need to specify the From name/address.
loEForward.FromAddress = "matt@someMailServer.com"
loEForward.FromName = "Matt"

* If we wish to add text at the start of the email body:
loSbHtmlBody = CreateObject('Chilkat.StringBuilder')
IF (loEForward.HasHtmlBody() = 1) THEN
    loSbHtmlBody.Append(loEForward.GetHtmlBody())
    loSbHtmlBody.Prepend("<p>Hello, this is an email I'm forwarding to you...</p>")
    loEForward.SetHtmlBody(loSbHtmlBody.GetAsString())
ENDIF

loSbPtBody = CreateObject('Chilkat.StringBuilder')
IF (loEForward.HasPlainTextBody() = 1) THEN
    loSbPtBody.Append(loEForward.GetPlainTextBody())
    loSbPtBody.Prepend("Hello, this is an email I'm forwarding to you..." + CHR(13) + CHR(10) + CHR(13) + CHR(10))
    loEForward.SetTextBody(loSbPtBody.GetAsString(),"text/plain")
ENDIF

* We could save the .eml, then double-click on it to view in our mail program, such as Outlook or Thunderbird..
loEForward.SaveEml("qa_output/forward.eml")

* We could send (forward) the email..
loMailman = CreateObject('Chilkat.MailMan')

loMailman.SmtpHost = "smtp.example.com"
loMailman.SmtpUsername = "myLogin"
loMailman.SmtpPassword = "myPassword"
loMailman.SmtpPort = 587
loMailman.StartTLS = 1

lnSuccess = loMailman.SendEmail(loEForward)
IF (lnSuccess = 0) THEN
    ? loMailman.LastErrorText
    RELEASE loImap
    RELEASE loEmail
    RELEASE loEForward
    RELEASE loSbHtmlBody
    RELEASE loSbPtBody
    RELEASE loMailman
    CANCEL
ENDIF

lnSuccess = loMailman.CloseSmtpConnection()
IF (lnSuccess <> 1) THEN
    ? "Connection to SMTP server not closed cleanly."
ENDIF

? "Mail Sent!"

RELEASE loImap
RELEASE loEmail
RELEASE loEForward
RELEASE loSbHtmlBody
RELEASE loSbPtBody
RELEASE loMailman