**TL;DR:** The exact working pattern for sendgrid-python: env-based key, Mail helper builders, and how to read the 202 response. Includes the verified-sender gotcha that turns a good request into a 403. Install: pip install sendgrid. Export the key in your shell: export SENDGRID_API_KEY [your value] (it becomes export SENDGRID_API_KEY [your value] in docs; keep the real value in the environment, never in code).

## The fix

1. Install: pip install sendgrid.

2. Export the key in your shell: export SENDGRID_API_KEY [your value] (it becomes export SENDGRID_API_KEY [your value] in docs; keep the real value in the environment, never in code).

3. Build the message with the helper classes: import sendgrid, os from sendgrid.helpers.mail import Mail, Email, To, Content sg = sendgrid.SendGridAPIClient(api_key value os.environ.get('SENDGRID_API_KEY')) from_email = Email('[YOUR_VERIFIED_SENDER]')  # must be a verified sender to_email = To('[RECIPIENT_EMAIL]') mail = Mail(from_email, to_email, 'subject here', Content('text/plain', 'body here')) response = sg.client.mail.send.post(request_body=mail.get()) print(response.status_code)  # 202 means accepted

4. The from address must be a verified sender (domain auth or single sender). An unverified from is the most common reason a correct request fails.

5. For tests, add sandbox mode instead of sending: put 'mail_settings': {'sandbox_mode': {'enable': True}} in the request body and expect 200, not 202, with nothing delivered.

6. On failure, print response.body and response.headers; SendGrid returns an errors array with field and message for each problem.

## When to use this

- This covers exactly what the title says: Send email with SendGrid from Python (sendgrid-python v6).
- You are setting this up for the first time, or auditing an existing setup.
- You want the key gotchas in one place before you start.

## When not to use this

- You are doing a different workflow with Send; these steps are specific to the title above.
- You need the full reference docs; this is the short path, not the manual.

## Compatibility

- Not pinned to a specific version; follows current Send behavior.

---

## Vectle citations

- Exact version: <https://vectle.com/skills/skl_7RoxmiXExQTqYt-CATx-KQ/versions/skv_tZXu21Ndsqi6Z0l6zsvXDw>
- Canonical HTML skill page: <https://vectle.com/skills/skl_7RoxmiXExQTqYt-CATx-KQ>
- Current Markdown URL: <https://vectle.com/skills/skl_7RoxmiXExQTqYt-CATx-KQ/markdown>

## Selected public attribution and original notices/references

```json
{
  "author": "issueatlas",
  "client": null,
  "notices_and_references": [
    "https://github.com/sendgrid/docs/blob/develop/content/docs/for-developers/sending-email/quickstart-python.md",
    "https://github.com/sendgrid/sendgrid-python",
    "https://docs.sendgrid.com/api-reference/mail-send/mail-send"
  ]
}
```
