Sample code for 30+ languages & platforms
Visual FoxPro

SendGrid -- Send Email with Attachment

See more SendGrid Examples

Sends an email with an attachment.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loJson
LOCAL loBd
LOCAL loResp
LOCAL lnRespStatusCode

lnSuccess = 0

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

loHttp = CreateObject('Chilkat.Http')

* Implements the following CURL command:

* curl --request POST \
*   --url https://api.sendgrid.com/v3/mail/send \
*   --header 'authorization: Bearer YOUR_API_KEY' \
*   --header 'Content-Type: application/json' \
*   --data '{"personalizations": [{"to": [{"email": "recipient@example.com"}]}],"from": {"email": "sender@example.com"},"subject":"Hello, World!","content": [{"type": "text/html","value": "Hey,<br>Please find attachment."}], "attachments": [{"content": "BASE64_ENCODED_CONTENT", "type": "text/plain", "filename": "attachment.txt"}]}'

* Use the following online tool to generate HTTP code from a CURL command
* Convert a cURL Command to HTTP Source Code

* Use this online tool to generate code from sample JSON:
* Generate Code to Create JSON

* The following JSON is sent in the request body.

* {
*   "personalizations": [
*     {
*       "to": [
*         {
*           "email": "recipient@example.com"
*         }
*       ]
*     }
*   ],
*   "from": {
*     "email": "sender@example.com"
*   },
*   "subject": "Hello, World!",
*   "content": [
*     {
*       "type": "text/html",
*       "value": "Hey,<br>Please find attachment."
*     }
*   ],
*   "attachments": [
*     {
*       "content": "BASE64_ENCODED_CONTENT",
*       "type": "text/plain",
*       "filename": "attachment.txt"
*     }
*   ]
* }

loJson = CreateObject('Chilkat.JsonObject')
loJson.UpdateString("personalizations[0].to[0].email","recipient@example.com")
loJson.UpdateString("from.email","sender@example.com")
loJson.UpdateString("subject","Hello, World!")
loJson.UpdateString("content[0].type","text/html")
loJson.UpdateString("content[0].value","Hey,<br>Please find attachment.")

* Load a file to be attached.
loBd = CreateObject('Chilkat.BinData')
lnSuccess = loBd.LoadFile("qa_data/pdf/hello.pdf")

loJson.UpdateString("attachments[0].content",loBd.GetEncoded("base64"))
loJson.UpdateString("attachments[0].type","application/pdf")
loJson.UpdateString("attachments[0].filename","hello.pdf")

* Adds the "Authorization: Bearer YOUR_API_KEY" header.
loHttp.AuthToken = "YOUR_API_KEY"

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpJson("POST","https://api.sendgrid.com/v3/mail/send",loJson,"application/json",loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loJson
    RELEASE loBd
    RELEASE loResp
    CANCEL
ENDIF

lnRespStatusCode = loResp.StatusCode
? "Response Status Code = " + STR(lnRespStatusCode)
IF (lnRespStatusCode <> 202) THEN
    ? "Response Header:"
    ? loResp.Header
    ? "Response Body:"
    ? loResp.BodyStr
    ? "Failed."
    RELEASE loHttp
    RELEASE loJson
    RELEASE loBd
    RELEASE loResp
    CANCEL
ENDIF

? "Success."

RELEASE loHttp
RELEASE loJson
RELEASE loBd
RELEASE loResp