PureBasic
PureBasic
Forward by Attaching the Existing Email to a New Email
See more Email Object Examples
Demonstrates how to forward an email by attaching the email to a new email.This example reads an email from an IMAP server, attaches the email to a new email, and sends the new email.
Chilkat PureBasic Downloads
IncludeFile "CkImap.pb"
IncludeFile "CkEmail.pb"
IncludeFile "CkMailMan.pb"
Procedure ChilkatExample()
success.i = 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.
imap.i = CkImap::ckCreate()
If imap.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to an IMAP server.
CkImap::setCkSsl(imap, 1)
CkImap::setCkPort(imap, 993)
success = CkImap::ckConnect(imap,"imap.example.com")
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
ProcedureReturn
EndIf
; Login
success = CkImap::ckLogin(imap,"myLogin","myPassword")
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
ProcedureReturn
EndIf
; Select an IMAP mailbox
success = CkImap::ckSelectMailbox(imap,"Inbox")
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
ProcedureReturn
EndIf
numEmails.i = CkImap::ckNumMessages(imap)
; Fetch the email at the last sequence number.
; (We are assuming the Inbox has at least 1 email)
email.i = CkEmail::ckCreate()
If email.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkImap::ckFetchEmail(imap,0,numEmails,0,email)
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
CkEmail::ckDispose(email)
ProcedureReturn
EndIf
; Disconnect from the IMAP server.
CkImap::ckDisconnect(imap)
Debug CkEmail::ckSubject(email)
; Create a new email. The email we just read will be attached to this email.
eForward.i = CkEmail::ckCreate()
If eForward.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkEmail::ckAddTo(eForward,"Joe","joe@example.com")
CkEmail::setCkFromAddress(eForward, "matt@somewhere.com")
CkEmail::setCkFromName(eForward, "Matt")
CkEmail::setCkSubject(eForward, "This is an email with another email attached.")
CkEmail::ckSetHtmlBody(eForward,"<p>Hello, this is an email I'm forwarding to you. See the attached email.</p>")
; Attach the email.
CkEmail::ckAttachEmail(eForward,email)
; We could save the .eml, then double-click on it to view in our mail program, such as Outlook or Thunderbird..
CkEmail::ckSaveEml(eForward,"qa_output/forward.eml")
; We could send (forward) the email..
mailman.i = CkMailMan::ckCreate()
If mailman.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkMailMan::setCkSmtpHost(mailman, "smtp.example.com")
CkMailMan::setCkSmtpUsername(mailman, "myLogin")
CkMailMan::setCkSmtpPassword(mailman, "myPassword")
CkMailMan::setCkSmtpPort(mailman, 587)
CkMailMan::setCkStartTLS(mailman, 1)
success = CkMailMan::ckSendEmail(mailman,eForward)
If success = 0
Debug CkMailMan::ckLastErrorText(mailman)
CkImap::ckDispose(imap)
CkEmail::ckDispose(email)
CkEmail::ckDispose(eForward)
CkMailMan::ckDispose(mailman)
ProcedureReturn
EndIf
success = CkMailMan::ckCloseSmtpConnection(mailman)
If success <> 1
Debug "Connection to SMTP server not closed cleanly."
EndIf
Debug "Mail Sent!"
CkImap::ckDispose(imap)
CkEmail::ckDispose(email)
CkEmail::ckDispose(eForward)
CkMailMan::ckDispose(mailman)
ProcedureReturn
EndProcedure