PureBasic
PureBasic
Convert HTML Web Page to Email and Send
See more MHT / HTML Email Examples
Converts an HTML page at a URL into an email with embedded images and sends it.Chilkat PureBasic Downloads
IncludeFile "CkMht.pb"
IncludeFile "CkEmail.pb"
IncludeFile "CkMailMan.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
mailman.i = CkMailMan::ckCreate()
If mailman.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; The MHT component can be used to convert an HTML page
; from a URL, file, or in-memory HTML into an email
; with embedded images and style sheets.
mht.i = CkMht::ckCreate()
If mht.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
email.i = CkEmail::ckCreate()
If email.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; There are two ways of embedding images in emails: with CIDs
; and without. When using CIDs, the IMG SRC attributes use
; urls that begin with "cid:" and the corresponding image
; embedded within the email includes a Content-ID header field.
; When not using CIDs, the IMG SRC attribute can have a URL,
; path, etc. and the corresponding image embedded within
; the email has a matching Content-Location header field.
; When testing with GMail, if CIDs are used the email will
; be displayed with images blocked (by default) unless
; the user allows them to be displayed. Without CIDs,
; the images are automatically displayed.
; When testing with Eudora, Mozilla Thunderbird, and Outlook Express,
; embedded images display correctly with our without CIDs.
; When testing with Yahoo! Mail, embedded images display OK.
; However, the Yahoo! Mail user has the option of blocking
; images. If this is turned on, the CID images will still
; display correctly even though images are blocked. Why?
; It's because when viewing the email there is no external
; HTTP request to fetch an image. Therefore, a spammer
; cannot get an indication that you've read the email.
; However, if CIDs are not used, the images are blocked by
; any Yahoo! Mail user that has image blocking turned on --
; even though the images are embedded.
; I haven't tested Hotmail yet...
; Regardless, there is no perfect solution. If CIDs are used,
; GMail users may block your embedded images, if CIDs are not
; used, Yahoo! Mail users may block your embedded images.
; I recommend setting using CIDs. This is what Mozilla Thunderbird
; does by default, and it's the more clear an unambiguous way
; to indicate that images are indeed embedded.
CkMht::setCkUseCids(mht, 1)
emlStr.s = CkMht::ckGetEML(mht,"http://www.bonairefishing.com/")
If CkMht::ckLastMethodSuccess(mht) <> 1
Debug CkMht::ckLastErrorText(mht)
CkMailMan::ckDispose(mailman)
CkMht::ckDispose(mht)
CkEmail::ckDispose(email)
ProcedureReturn
EndIf
success = CkEmail::ckSetFromMimeText(email,emlStr)
If success <> 1
Debug CkEmail::ckLastErrorText(email)
CkMailMan::ckDispose(mailman)
CkMht::ckDispose(mht)
CkEmail::ckDispose(email)
ProcedureReturn
EndIf
CkEmail::setCkSubject(email, "Test HTML email")
; This example is tested in:
; Outlook 2000, Eudora 7, Mozilla Thunderbird 1.5.0.9, Outlook Express 6, GMail, Yahoo Mail
success = CkEmail::ckAddTo(email,"Chilkat Support","support@chilkatsoft.com")
; Note: Chilkat does not regularly check our GMail and Yahoo
; email accounts. Please send support email to support@chilkatsoft.com
success = CkEmail::ckAddTo(email,"Chilkat on Yahoo","chilkat_software@yahoo.com")
success = CkEmail::ckAddTo(email,"Chilkat on GMail","chilkat.support@gmail.com")
CkEmail::setCkFrom(email, "chilkat@live.com")
; Send email using smtp.live.com
CkMailMan::setCkSmtpHost(mailman, "smtp.live.com")
CkMailMan::setCkSmtpUsername(mailman, "chilkat@live.com")
CkMailMan::setCkSmtpPassword(mailman, "myPassword")
CkMailMan::setCkSmtpPort(mailman, 587)
CkMailMan::setCkStartTLS(mailman, 1)
success = CkMailMan::ckSendEmail(mailman,email)
If success <> 1
Debug CkMailMan::ckLastErrorText(mailman)
CkMailMan::ckDispose(mailman)
CkMht::ckDispose(mht)
CkEmail::ckDispose(email)
ProcedureReturn
EndIf
success = CkMailMan::ckCloseSmtpConnection(mailman)
If success <> 1
Debug CkMailMan::ckLastErrorText(mailman)
CkMailMan::ckDispose(mailman)
CkMht::ckDispose(mht)
CkEmail::ckDispose(email)
ProcedureReturn
EndIf
Debug "HTML Email Sent!"
CkMailMan::ckDispose(mailman)
CkMht::ckDispose(mht)
CkEmail::ckDispose(email)
ProcedureReturn
EndProcedure