PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
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)
eForward.i = CkEmail::ckCreate()
If eForward.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkEmail::ckToForward(email,eForward)
If success = 0
Debug CkEmail::ckLastErrorText(email)
CkImap::ckDispose(imap)
CkEmail::ckDispose(email)
CkEmail::ckDispose(eForward)
ProcedureReturn
EndIf
; The eForward email has no To or CC recipients yet.
; Add one or more..
CkEmail::ckAddTo(eForward,"Joe","joe@example.com")
; We also need to specify the From name/address.
CkEmail::setCkFromAddress(eForward, "matt@someMailServer.com")
CkEmail::setCkFromName(eForward, "Matt")
; If we wish to add text at the start of the email body:
sbHtmlBody.i = CkStringBuilder::ckCreate()
If sbHtmlBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
If CkEmail::ckHasHtmlBody(eForward) = 1
CkStringBuilder::ckAppend(sbHtmlBody,CkEmail::ckGetHtmlBody(eForward))
CkStringBuilder::ckPrepend(sbHtmlBody,"<p>Hello, this is an email I'm forwarding to you...</p>")
CkEmail::ckSetHtmlBody(eForward,CkStringBuilder::ckGetAsString(sbHtmlBody))
EndIf
sbPtBody.i = CkStringBuilder::ckCreate()
If sbPtBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
If CkEmail::ckHasPlainTextBody(eForward) = 1
CkStringBuilder::ckAppend(sbPtBody,CkEmail::ckGetPlainTextBody(eForward))
CkStringBuilder::ckPrepend(sbPtBody,"Hello, this is an email I'm forwarding to you..." + Chr(13) + Chr(10) + Chr(13) + Chr(10))
CkEmail::ckSetTextBody(eForward,CkStringBuilder::ckGetAsString(sbPtBody),"text/plain")
EndIf
; 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)
CkStringBuilder::ckDispose(sbHtmlBody)
CkStringBuilder::ckDispose(sbPtBody)
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)
CkStringBuilder::ckDispose(sbHtmlBody)
CkStringBuilder::ckDispose(sbPtBody)
CkMailMan::ckDispose(mailman)
ProcedureReturn
EndProcedure