Sample code for 30+ languages & platforms
PureBasic

Create Apple Watch HTML (text/watch-html) Email

See more Email Object Examples

Demonstrates how to create an Apple Watch text/watch-html email.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkEmail.pb"
IncludeFile "CkMime.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example will produce an email such as:

    ; 	MIME-Version: 1.0
    ; 	Date: Fri, 02 Jun 2017 09:17:06 -0500
    ; 	Message-ID: <E6F1F17104442EA09740322D3E2E78806C87FB80@CHILKAT13>
    ; 	X-Priority: 3 (Normal)
    ; 	Subject: Apple Watch Example
    ; 	From: from@example.org
    ; 	To: to@example.org
    ; 	Content-Type: multipart/alternative; boundary="------------080904030200000307060803"
    ; 
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/plain; charset=utf-8
    ; 	Content-Transfer-Encoding: quoted-printable
    ; 	Content-Disposition: inline
    ; 
    ; 	This is the plain text part.
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/watch-html; charset=utf-8
    ; 	Content-Disposition: inline
    ; 	Content-Transfer-Encoding: quoted-printable
    ; 
    ; 	<b>This is the Watch HTML part</b>
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/html; charset=utf-8
    ; 	Content-Disposition: inline
    ; 	Content-Transfer-Encoding: quoted-printable
    ; 
    ; 	<p>This is the standard HTML part</p>
    ; 	--------------080904030200000307060803--

    ; Create a new email instance to get the default auto-created fields.
    email.i = CkEmail::ckCreate()
    If email.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkEmail::setCkBody(email, "This is the plain text part.")
    CkEmail::setCkSubject(email, "Apple Watch Example")
    CkEmail::setCkFrom(email, "from@example.org")
    CkEmail::ckAddTo(email,"","to@example.org")

    Debug CkEmail::ckGetMime(email)
    Debug "--"

    ; This is the MIME so far:
    ; (Chilkat automatically removes CKX-* headers when sending email.)

    ; 	MIME-Version: 1.0
    ; 	Date: Fri, 02 Jun 2017 09:17:06 -0500
    ; 	Message-ID: <E6F1F17104442EA09740322D3E2E78806C87FB80@CHILKAT13>
    ; 	Content-Type: text/plain; format=flowed
    ; 	Content-Transfer-Encoding: 7bit
    ; 	X-Priority: 3 (Normal)
    ; 	Subject: Apple Watch Example
    ; 	From: from@example.org
    ; 	To: to@example.org
    ; 
    ; 	This is the plain text part.

    ; We'll use the Chilkat MIME object to build it.
    ; The MIME API provides more flexibility..
    mime.i = CkMime::ckCreate()
    If mime.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkMime::ckLoadMime(mime,CkEmail::ckGetMime(email))

    ; Convert this MIME to multipart/alternative.
    CkMime::ckConvertToMultipartAlt(mime)

    Debug CkMime::ckGetMime(mime)
    Debug "--"

    ; We now have this MIME:

    ; 	MIME-Version: 1.0
    ; 	Date: Fri, 02 Jun 2017 09:17:06 -0500
    ; 	Message-ID: <E6F1F17104442EA09740322D3E2E78806C87FB80@CHILKAT13>
    ; 	X-Priority: 3 (Normal)
    ; 	Subject: Apple Watch Example
    ; 	From: from@example.org
    ; 	To: to@example.org
    ; 	Content-Type: multipart/alternative; boundary="------------080904030200000307060803"
    ; 
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/plain; format=flowed
    ; 	Content-Transfer-Encoding: 7bit
    ; 
    ; 	This is the plain text part.
    ; 	--------------080904030200000307060803--

    ; If we desire a particular charset, encoding, or disposition..

    partPlainText.i = CkMime::ckCreate()
    If partPlainText.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkMime::ckPartAt(mime,0,partPlainText)
    If success = 0
        Debug CkMime::ckLastErrorText(mime)
        CkEmail::ckDispose(email)
        CkMime::ckDispose(mime)
        CkMime::ckDispose(partPlainText)
        ProcedureReturn
    EndIf

    CkMime::setCkCharset(partPlainText, "utf-8")
    CkMime::setCkDisposition(partPlainText, "inline")
    CkMime::setCkEncoding(partPlainText, "quoted-printable")

    ; Create the text/watch-html MIME part and add it.
    partWatchHtml.i = CkMime::ckCreate()
    If partWatchHtml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkMime::setCkContentType(partWatchHtml, "text/watch-html")
    CkMime::setCkCharset(partWatchHtml, "utf-8")
    CkMime::setCkDisposition(partWatchHtml, "inline")
    CkMime::setCkEncoding(partWatchHtml, "quoted-printable")
    CkMime::ckSetBody(partWatchHtml,"<b>This is the Watch HTML part</b>")
    CkMime::ckAppendPart(mime,partWatchHtml)

    Debug CkMime::ckGetMime(mime)
    Debug "--"

    ; We now have this MIME:

    ; 	MIME-Version: 1.0
    ; 	Date: Fri, 02 Jun 2017 09:17:06 -0500
    ; 	Message-ID: <E6F1F17104442EA09740322D3E2E78806C87FB80@CHILKAT13>
    ; 	X-Priority: 3 (Normal)
    ; 	Subject: Apple Watch Example
    ; 	From: from@example.org
    ; 	To: to@example.org
    ; 	Content-Type: multipart/alternative; boundary="------------080904030200000307060803"
    ; 
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/plain; charset=utf-8
    ; 	Content-Transfer-Encoding: quoted-printable
    ; 	Content-Disposition: inline
    ; 
    ; 	This is the plain text part.
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/watch-html; charset=utf-8
    ; 	Content-Disposition: inline
    ; 	Content-Transfer-Encoding: quoted-printable
    ; 
    ; 	<b>This is the Watch HTML part</b>
    ; 	--------------080904030200000307060803--

    ; Create the text/html MIME part and add it.
    partHtml.i = CkMime::ckCreate()
    If partHtml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkMime::setCkContentType(partHtml, "text/html")
    CkMime::setCkCharset(partHtml, "utf-8")
    CkMime::setCkDisposition(partHtml, "inline")
    CkMime::setCkEncoding(partHtml, "quoted-printable")
    CkMime::ckSetBody(partHtml,"<p>This is the standard HTML part</p>")
    CkMime::ckAppendPart(mime,partHtml)

    Debug CkMime::ckGetMime(mime)
    Debug "--"

    ; We now have this MIME:

    ; 	MIME-Version: 1.0
    ; 	Date: Fri, 02 Jun 2017 09:17:06 -0500
    ; 	Message-ID: <E6F1F17104442EA09740322D3E2E78806C87FB80@CHILKAT13>
    ; 	X-Priority: 3 (Normal)
    ; 	Subject: Apple Watch Example
    ; 	From: from@example.org
    ; 	To: to@example.org
    ; 	Content-Type: multipart/alternative; boundary="------------080904030200000307060803"
    ; 
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/plain; charset=utf-8
    ; 	Content-Transfer-Encoding: quoted-printable
    ; 	Content-Disposition: inline
    ; 
    ; 	This is the plain text part.
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/watch-html; charset=utf-8
    ; 	Content-Disposition: inline
    ; 	Content-Transfer-Encoding: quoted-printable
    ; 
    ; 	<b>This is the Watch HTML part</b>
    ; 	--------------080904030200000307060803
    ; 	Content-Type: text/html; charset=utf-8
    ; 	Content-Disposition: inline
    ; 	Content-Transfer-Encoding: quoted-printable
    ; 
    ; 	<p>This is the standard HTML part</p>
    ; 	--------------080904030200000307060803--

    ; Load the email object with this MIME, and we're good to go..
    CkEmail::ckSetFromMimeText(email,CkMime::ckGetMime(mime))
    Debug CkEmail::ckGetMime(email)


    CkEmail::ckDispose(email)
    CkMime::ckDispose(mime)
    CkMime::ckDispose(partPlainText)
    CkMime::ckDispose(partWatchHtml)
    CkMime::ckDispose(partHtml)


    ProcedureReturn
EndProcedure