【发布时间】:2014-11-24 20:20:53
【问题描述】:
如果这是一个愚蠢的问题,我深表歉意,但我在本网站或其他网站上都没有找到有关此问题的任何可靠信息。
话虽如此,我正在开发一个 MVC 5 Web 应用程序。我在 ASP.net 上关注 this tutorial。
public async Task SendAsync(IdentityMessage message)
{
await configSendGridasync(message);
}
private async Task configSendGridasync(IdentityMessage message)
{
var myMessage = new SendGridMessage();
myMessage.AddTo(message.Destination);
myMessage.From = new System.Net.Mail.MailAddress(
"info@ycc.com", "Your Contractor Connection");
myMessage.Subject = message.Subject;
myMessage.Text = message.Body;
myMessage.Html = message.Body;
var credentials = new NetworkCredential(
Properties.Resources.SendGridUser,
Properties.Resources.SendGridPassword,
Properties.Resources.SendGridURL // necessary?
);
// Create a Web transport for sending email.
var transportWeb = new Web(credentials);
// Send the email.
if (transportWeb != null)
{
await transportWeb.DeliverAsync(myMessage);
}
else
{
Trace.TraceError("Failed to create Web transport.");
await Task.FromResult(0);
}
}
上述方法每次到达await transportWeb.SendAsync(myMessage)这一行,浏览器都会出现这个错误:
“/”应用程序中的服务器错误。
错误请求
说明:在执行当前 Web 请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详情:System.Exception:错误请求
Line 54: if (transportWeb != null)
Line 55: {
Line 56: await transportWeb.DeliverAsync(myMessage);
Line 57: }
Line 58: else
Line 59: {
Line 60: Trace.TraceError("Failed to create Web transport.");
Line 61: await Task.FromResult(0);
Line 62: }
我在https://sendgrid.com/ 注册了一个免费帐户,使用“Google 免费套餐”,每月可获得 25,000 个积分。帐户已配置。
到目前为止,我已经尝试了很多方法,包括:禁用 SSL、将用户名/密码直接放在代码中而不是从 Resources.resx 文件中提取它们、在 NetworkCredential 对象中指定 SMTP 服务器,并且还尝试过将DeliverAsync(...) 更改为Deliver()。
我尝试明确设置subject,而不是像this post 建议的那样使用message.Subject。我还在Account/Register方法中生成的callbackUrl上尝试了HttpUtility.UrlEncodesuggested here。不幸的是,结果相同。
是否有人碰巧对可能导致此功能无法正常运行的原因有所了解?
【问题讨论】:
-
@DJKRAZE 我使用 VS2013 社区版中的 NuGet 来获取最新的 SendGrid。你链接的那个和我的包不一样吗?
标签: c# asp.net-mvc email asp.net-mvc-5 sendgrid