Skip to content

Latest commit

 

History

History
96 lines (68 loc) · 3.66 KB

TROUBLESHOOTING.md

File metadata and controls

96 lines (68 loc) · 3.66 KB

If you have a non-library SendGrid issue, please contact our support team.

If you can't find a solution below, please open an issue.

Table of Contents

Migrating from v2 to v3

Please review our guide on how to migrate from v2 to v3.

Continue Using v2

Here is the last working version with v2 support.

Download:

Click the "Clone or download" green button in GitHub and choose download.

Testing v3 /mail/send Calls Directly

Here are some cURL examples for common use cases.

Error Messages

An error is returned if caused by client policy (such as CheckRedirect), or failure to speak HTTP (such as a network connectivity problem).

To read the error message returned by SendGrid's API:

func main() {
	from := mail.NewEmail("Example User", "test@example.com")
	subject := "Hello World from the SendGrid Go Library"
	to := mail.NewEmail("Example User", "test@example.com")
	content := mail.NewContent("text/plain", "some text here")
	m := mail.NewV3MailInit(from, subject, to, content)

	request := sendgrid.GetRequest(os.Getenv("SENDGRID_API_KE"), "/v3/mail/send", "https://api.sendgrid.com")
	request.Method = "POST"
	request.Body = mail.GetRequestBody(m)
	response, err := sendgrid.API(request)
	if err != nil {
		log.Println(err)
	} else {
		fmt.Println(response.StatusCode)
		fmt.Println(response.Body)
		fmt.Println(response.Headers)
	}
}

CAUTION: A non-2xx status code doesn't cause an error on sendgrid.API and the application has to verify the response:

resp, err := sendgrid.API(request)
if err != nil {
	return err
}
if resp.StatusCode >= 400 {
	// something goes wrong and you have to handle (e.g. returning an error to the user or logging the problem)
	log.Printf("api response: HTTP %d: %s", resp.StatusCode, resp.Body)
	// OR
	// return fmt.Errorf("api response: HTTP %d: %s", resp.StatusCode, resp.Body)
}

Versions

We follow the MAJOR.MINOR.PATCH versioning scheme as described by SemVer.org. Therefore, we recommend that you always pin (or vendor) the particular version you are working with to your code and never auto-update to the latest version. Especially when there is a MAJOR point release, since that is guaranteed to be a breaking change. Changes are documented in the CHANGELOG and releases section.

Environment Variables and Your SendGrid API Key

All of our examples assume you are using environment variables to hold your SendGrid API key.

If you choose to add your SendGrid API key directly (not recommended):

os.Getenv("SENDGRID_API_KEY")

becomes

"SENDGRID_API_KEY"

In the first case SENDGRID_API_KEY is in reference to the name of the environment variable, while the second case references the actual SendGrid API Key.