Sample code for 30+ languages & platforms
DataFlex

Outlook Send HTML Email

See more Outlook Examples

This example sends an HTML email. Other examples exist for:
  • Sending plain-text email.
  • Sending HTML email with embedded images.
  • Sending email with attachments.
  • Sending HTML email with embedded images and attachments.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    Boolean iBCrlf
    Handle hoSbHtmlBody
    Variant vJson
    Handle hoJson
    Variant vResp
    Handle hoResp
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // Use your previously obtained access token here:
    // See the following examples for getting an access token:
    //    Get Microsoft Graph OAuth2 Access Token (Azure AD v2.0 Endpoint).
    //    Get Microsoft Graph OAuth2 Access Token (Azure AD Endpoint).
    //    Refresh Access Token (Azure AD v2.0 Endpoint).
    //    Refresh Access Token (Azure AD Endpoint).

    Set ComAuthToken Of hoHttp To "MICROSOFT_GRAPH_ACCESS_TOKEN"

    // To send mail, we'll POST to the following endpoint:
    // 
    // POST /users/{id | userPrincipalName}/sendMail
    // 
    // (The special keyword "me" may be used in place of a principal name.)
    // 

    // This example will send HTML email containing the following HTML body:

    // 	<html>
    // 	<head>
    // 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    // 	<meta content="text/html; charset=utf-8">
    // 	</head>
    // 	<body bgcolor="#FFFFFF">
    // 	<font face="Calibri">This is a test <b>HTML email</b>.<br>
    // 	</font>
    // 	</body>
    // 	</html>

    // Build the HTML body...
    Move True To iBCrlf
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbHtmlBody
    If (Not(IsComObjectCreated(hoSbHtmlBody))) Begin
        Send CreateComObject of hoSbHtmlBody
    End
    Get ComAppendLine Of hoSbHtmlBody "<html>" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody "<head>" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody '<meta content="text/html; charset=utf-8">' iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody "</head>" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody '<body bgcolor="#FFFFFF">' iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody '<font face="Calibri">This is a test <b>HTML email</b>.<br>' iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody "</font>" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody "</body>" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHtmlBody "</html>" iBCrlf To iSuccess

    // The body of the POST request contains JSON that specifies the email subject, body,
    // recipients, etc.  This example will build the following JSON HTML email:
    // 

    // 	{
    // 	  "message": {
    // 	    "subject": "Sample HTML Email",
    // 	    "body": {
    // 	      "contentType": "html",
    // 	      "content": "The HTML body goes here..."
    // 	    },
    // 	    "toRecipients": [
    // 	      {
    // 	        "emailAddress": {
    // 		  "name": "Chilkat Software",
    // 	          "address": "admin@chilkat.io"
    // 	        }
    // 	      },
    // 	      {
    // 	        "emailAddress": {
    // 	          "address": "chilkat.support@gmail.com"
    // 	        }
    // 	      }
    // 	    ],
    // 	    "ccRecipients": [
    // 	      {
    // 	        "emailAddress": {
    // 		  "name": "Chilkat Blog",
    // 		  "address": "admin@cknotes.com"
    // 	        }
    // 	      }
    // 	    ]
    // 	  },
    // 	  "saveToSentItems": true
    // 	}
    // 

    // Build the above JSON.
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComUpdateString Of hoJson "message.subject" "Sample HTML email" To iSuccess
    Get ComUpdateString Of hoJson "message.body.contentType" "html" To iSuccess
    Get ComGetAsString Of hoSbHtmlBody To sTemp1
    Get ComUpdateString Of hoJson "message.body.content" sTemp1 To iSuccess
    Get ComUpdateString Of hoJson "message.toRecipients[0].emailAddress.name" "Chilkat Software" To iSuccess
    Get ComUpdateString Of hoJson "message.toRecipients[0].emailAddress.address" "admin@chilkat.io" To iSuccess
    Get ComUpdateString Of hoJson "message.toRecipients[1].emailAddress.address" "chilkat.support@gmail.com" To iSuccess
    Get ComUpdateString Of hoJson "message.ccRecipients[0].emailAddress.name" "Chilkat Blog" To iSuccess
    Get ComUpdateString Of hoJson "message.ccRecipients[0].emailAddress.address" "admin@cknotes.com" To iSuccess
    Get ComUpdateBool Of hoJson "saveToSentItems" True To iSuccess

    // Send the HTTP POST (i.e. send the HTML email)
    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get pvComObject of hoJson to vJson
    Get pvComObject of hoResp to vResp
    Get ComHttpJson Of hoHttp "POST" "https://graph.microsoft.com/v1.0/me/sendMail" vJson "application/json" vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // The send succeeded if the response status code = 202.
    // In the success case, there is no response body.  (We just get the response code to know that it succeeded.)
    Get ComStatusCode Of hoResp To iTemp1
    If (iTemp1 <> 202) Begin
        Get ComBodyStr Of hoResp To sTemp1
        Get ComLoad Of hoJson sTemp1 To iSuccess
        Set ComEmitCompact Of hoJson To False
        Get ComEmit Of hoJson To sTemp1
        Showln sTemp1
        Get ComStatusCode Of hoResp To iTemp1
        Showln "Failed, response status code = " iTemp1
    End
    Else Begin
        Showln "Outlook HTML Mail Sent."
    End



End_Procedure