当前位置: 首页 > 编程语言 > C#

SendGrid在发送邮件时抛出InvalidApiRequestExceptionShare

时间:2023-04-11 02:52:23 C#

SendGrid在发送邮件时抛出InvalidApiRequestExceptionSendGrid在发送邮件时抛出InvalidApiRequestException。我正在使用此代码:publicTaskSendEmailAsync(stringemail,stringsubject,stringmessage){//在此处插入您的电子邮件服务以发送电子邮件。varmyMessage=newSendGrid.SendGridMessage();myMessage.AddTo(电子邮件);myMessage.From=newMailAddress("varshney@shobhit.com","Shobhit",System.Text.Encoding.Default);myMessage.Subject=主题;myMessage.Text=消息;myMessage.Html=消息;varcredentials=newNetworkCredential(Options.SendGridUser,Options.SendGridKey);//创建用于发送电子邮件的Web传输。vartransportWeb=newSendGrid.Web(credentials);//发送邮件。if(transportWeb!=null){返回transportWeb.DeliverAsync(myMessage);}else{返回Task.FromResult(0);}}堆垛跟踪是:InvalidApiRequestException:BadRequest检查`Errors`以获取API返回的错误列表。SendGrid.ErrorChecker.CheckForErrors(HttpResponseMessageresponse,Streamstream)SendGrid.ErrorChecker.d__1.MoveNext()---来自p的堆栈跟踪结束抛出异常的上一个位置---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)d__7.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()MessageBoard.Controllers.AccountController.d__9.MoveNext()inAccountController.csawait_emailSender.SendEmailAsync(model.Email,"Confirmyouraccount",---从之前位置开始的堆栈跟踪结束抛出异常---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask)System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()Microsoft.AspNet.Mvc.Controllers.ControllerActionExecutor.d__8`1.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.d__6.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)系统.Runtime.CompilerServices.TaskAwaiter`1.GetResult()Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__53.MoveNext()---来自pre的堆栈跟踪结束抛出异常的vious位置---System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__44.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler.d__6.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Routing.Template.TemplateRoute.d__27.MoveNext()---上一个位置的堆栈跟踪结束n抛出异常的地方---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务).RouteCollection.d__9.MoveNext()---从先前抛出异常的位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务))System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Builder.RouterMiddleware.d__4.MoveNext()---从先前抛出异常的位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.IISPlatformHandler.IISPlatformHandlerMiddleware.d__8.MoveNext()---从上一个抛出异常的位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Diagnostics.Entity.MigrationsEndPointMiddleware.d__5.MoveNext()---异常所在位置的堆栈跟踪结束抛出---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult().d__6.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()Microsoft.AspNet.Diagnostics.Entity.DatabaseErrorPageMiddleware.d__6.MoveNext()---从先前抛出异常的位置开始的堆栈跟踪结束---System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext()确保您使用的是SendGridC#库版本6.3那里是.x或更高版本之前的库版本中的错误。对于您的凭据,您使用的是Sendgrid用户名和密码吗?还是您的API密钥?从您的变量名看来,您正在传递一个API密钥。请尝试传递密码:Options.SendGridUserOptions.SendGridPassword我遇到了同样的问题。在我的例子中,根本原因是电子邮件地址中的一些德语字符要记录确切的错误,请尝试在try/catch块下方添加。try{//创建用于发送电子邮件的Web传输。变种transportWeb=新SendGrid。网络(凭证);//发送邮件。if(transportWeb!=null){返回transportWeb。DeliverAsync(我的消息);}}catch(InvalidApiRequestExceptionexception){if(exception.Errors!=null){foreach(varerrorinexception.Errors){//记录错误}}}无需任何包(newtonsoftjson除外)即可轻松使用sendgridAPI。在我的示例中,我使用了一个模板;您可以使用未注释内容字段的内容1)创建您的类publicclassMailObject{publicICollectionpersonalizations{get;放;}公共电子邮件来自{get;放;}publicstringtemplate_id}//publicICollection内容{get;放;}}publicclassMailPersonalizations{publicICollectionto{get;放;}公共字符串主题{得到;放;}公共字典替换{get;放;}}publicclassMailContent{publicstringtype{get;放;}公共字符串值{得到;放;}}publicclassEmail{publicstringemail{get;放;}公共字符串名称{get;放;}}2)创建MailObject并使用HttpClient发送以上是C#学习教程:SendGridthrowsInvalidApiRequestExceptionwhensendemails分享的所有内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注——publicasyncTaskSendEmailAsync(stringemail,stringsubject,stringmessage,stringurl="",stringbuttonText=""){//创建邮件对象varmailObject=newMailObject{personalizations=newList(),from=newEmail{email="no-reply@passion4it.be",name="No-ReplyPassion4IT"},template_id="cc84680c-a569-428b-ab26-9618584bc9ae"};//创建邮件个性化varpersonalization=newMailPersonalizations();personalization.to=newList();personalization.to.Add(newEmail{email=email});personalization.subject=subject;//Substitutionspersonalization.substitutions=newDictionary();personalization.substitutions.Add("-url-",url);personalization.substitutions.Add("-title-",subject);personalization.substitutions.Add("-custtext-",message);personalization.substitutions.Add("-buttonText-",buttonText);mailObject.personalizations.Add(personalization);//添加到邮件对象//SENDEMAILUSINGSENDGRIDAPIusing(varclient=newHttpClient()){varjsonMail=JsonConvert.SerializeObject(mailObject);//转换对象client.DefaultRequestHeaders.Accept.Clear();//清除标头client.DefaultRequestHeaders.Accept.Add(newMediaTypeWithQualityHeaderValue(“应用程序/json”));//添加接受类型client.DefaultRequestHeaders.Authorization=newAuthenticationHeaderValue("Bearer","YOURAPIKEY");//添加授权varresponse=awaitclient.PostAsync("https://api.sendgrid.com/v3/mail/send",newStringContent(jsonMail,Encoding.UTF8,"application/json"));//发送邮件}return;//已关闭}本文收集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: