使用SendGrid发送邮件时返回Maximum credits exceeded错误怎么办?
SendGrid 发送报错问题排查与解决方案
错误根因
你收到的报错:
{"errors":[{"message":"Maximum credits exceeded","field":null,"help":null}]}
和你编写的代码逻辑无关,错误本质是当前使用的SendGrid账户的可用发送配额已耗尽,平台暂时封禁了该账户的发信权限。
代码校验
你提供的C#调用代码完全符合SendGrid官方SDK的使用规范,无需做任何逻辑修改:
SendGridClient client = new SendGridClient("SG.************************************************"); var from = new EmailAddress("test@testdomain.com"); var subject = "Testing SendGrid"; var to = new EmailAddress("test@yopmail.com"); var plainTextContent = "SendGrid is Working"; var htmlContent = "<strong>SendGrid is Working</strong>"; var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); var response = await client.SendEmailAsync(msg); var responseBody = response.Body.ReadAsStringAsync().Result; Console.WriteLine(responseBody); Console.ReadKey();
调整账户配额后重新运行代码即可正常发信。
常见触发原因
- 当前使用SendGrid免费套餐,月度/单日免费发送额度已全部用完
- 付费套餐的月度固定发送额度已耗尽,未开启超额自动扩容规则
- 使用的API Key绑定的是子账户,子账户分配的额度已经用尽
- 业务侧存在重复触发发信的逻辑bug,导致额度被异常消耗
对应解决方案
- 登录SendGrid后台,进入账单与订阅页面查看当前额度使用明细,确认是否真的额度耗尽
- 免费额度耗尽的情况,可临时升级到付费套餐获取更高发送额度
- 付费套餐额度耗尽的情况,开启超额自动扣费扩容规则,避免后续业务中断
- 仅做测试使用的话,可以重新注册一个SendGrid账户,使用新账户的免费额度完成测试
- 排查业务发信逻辑,检查是否存在异常重复触发发信的问题,避免额度被无意义浪费
内容的提问来源于stack exchange,提问作者Muhammad Sajid
相关产品推荐
相关产品推荐

