Sample code for 30+ languages & platforms
Dart

SendGrid -- Send Email with Attachment

See more SendGrid Examples

Sends an email with an attachment.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example assumes the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

  // 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"
  //     }
  //   ]
  // }

  final json = CkJsonObject();
  json.updateString('personalizations[0].to[0].email', 'recipient@example.com');
  json.updateString('from.email', 'sender@example.com');
  json.updateString('subject', 'Hello, World!');
  json.updateString('content[0].type', 'text/html');
  json.updateString('content[0].value', 'Hey,<br>Please find attachment.');

  // Load a file to be attached.
  final bd = CkBinData();
  bd.loadFile('qa_data/pdf/hello.pdf');

  json.updateString('attachments[0].content', bd.getEncoded('base64'));
  json.updateString('attachments[0].type', 'application/pdf');
  json.updateString('attachments[0].filename', 'hello.pdf');

  // Adds the "Authorization: Bearer YOUR_API_KEY" header.
  http.authToken = 'YOUR_API_KEY';

  final resp = CkHttpResponse();
  try {
    http.httpJson('POST', 'https://api.sendgrid.com/v3/mail/send', json, 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final respStatusCode = resp.statusCode;
  print('Response Status Code = $respStatusCode');
  if (respStatusCode != 202) {
    print('Response Header:');
    print(resp.header);
    print('Response Body:');
    print(resp.bodyStr);
    print('Failed.');
    return;
  }

  print('Success.');
}