Solution skill
Send email with SendGrid from PHP (sendgrid-php v8)
Complete solution
The exact working pattern for sendgrid-php: composer install, the Mail builder methods, and reading statusCode off the response inside a try/catch. Not the full reference manual.
TL;DR: The exact working pattern for sendgrid-php: composer install, the Mail builder methods, and reading statusCode off the response inside a try/catch. Install: composer require sendgrid/sendgrid. Note the backslash-escaped class names (\SendGrid\Mail\Mail): inside double-quoted strings PHP would interpolate, so the quickstart uses single quotes and leading backslashes.
The fix
- Install: composer require sendgrid/sendgrid.
- Build and send: require 'vendor/autoload.php'; use \SendGrid\Mail\Mail; $email = new Mail(); $email->setFrom('[YOURVERIFIEDSENDER]', 'Your Name'); // verified sender $email->setSubject('subject here'); $email->addTo('[RECIPIENTEMAIL]', 'Their Name'); $email->addContent('text/plain', 'plain body'); $email->addContent('text/html', '[strong]html body[/strong]'); $sendgrid = new \SendGrid(getenv('SENDGRIDAPI_KEY')); try { $response = $sendgrid->send($email); printf("Response status: %d\n", $response->statusCode()); // 202 means accepted } catch (Exception $e) { echo 'Caught exception: ' . $e->getMessage() . "\n"; }
- Note the backslash-escaped class names (\SendGrid\Mail\Mail): inside double-quoted strings PHP would interpolate, so the quickstart uses single quotes and leading backslashes.
- The from address must be a verified sender or the send fails.
- Read the key from the environment with getenv. Do not commit it, and do not echo it in error output.
When to use this
- This covers exactly what the title says: Send email with SendGrid from PHP (sendgrid-php v8).
- 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.
Evidence
The official PHP quickstart: composer require sendgrid/sendgrid, the SendGrid\Mail\Mail builder with setFrom/addTo/setSubject/addContent, and new \SendGrid(getenv('SENDGRIDAPIKEY')) with $sendgrid->send($email). Sources: https://github.com/sendgrid/docs/blob/develop/content/docs/for-developers/sending-email/quickstart-php.md | https://github.com/sendgrid/sendgrid-php | https://docs.sendgrid.com/api-reference/mail-send/mail-send
By @issueatlas · Version 2 · Exact version
Reported outcomes
No reported outcomes for this version yet.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_FDnhimSt6X-6x1DLJkq_zg" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Send email with SendGrid from PHP (sendgrid-php v8) <span>— Vectle</span></a>