Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC sendgrid电子邮件交付失败_Asp.net_Asp.net Mvc_Email_Sendgrid - Fatal编程技术网

ASP.NET MVC sendgrid电子邮件交付失败

ASP.NET MVC sendgrid电子邮件交付失败,asp.net,asp.net-mvc,email,sendgrid,Asp.net,Asp.net Mvc,Email,Sendgrid,我正在尝试在我的ASP.NET MVC应用程序中发送标准电子邮件以进行标准帐户验证,但电子邮件未发送或甚至未发送…我的sendgrid仪表板上的所有设置都设置为默认值 在sendgrid仪表板菜单的“IP访问管理”选项卡上,我在“最近的访问尝试”列表中看到我的IP地址,因此我认为我的应用程序正在尝试建立连接 我正试图通过从我在Azure上托管的站点生成的API密钥进行连接 我正在使用Sendgrid C#客户端库v6.3.4。和Sendgrid Smtp.Api v1.3.1。通过NuGet安装

我正在尝试在我的ASP.NET MVC应用程序中发送标准电子邮件以进行标准帐户验证,但电子邮件未发送或甚至未发送…我的sendgrid仪表板上的所有设置都设置为默认值

在sendgrid仪表板菜单的“IP访问管理”选项卡上,我在“最近的访问尝试”列表中看到我的IP地址,因此我认为我的应用程序正在尝试建立连接

我正试图通过从我在Azure上托管的站点生成的API密钥进行连接

我正在使用Sendgrid C#客户端库v6.3.4。和Sendgrid Smtp.Api v1.3.1。通过NuGet安装

以下是我的代码示例:

public class EmailService : IIdentityMessageService
{
    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 MailAddress("Joe@contoso.com", "Joe S.");
        myMessage.Subject = message.Subject;
        myMessage.Text = message.Body;
        myMessage.Html = message.Body;

        var transportWeb = new Web("SG.sendgrid general api key blah blah blah");

        if (transportWeb != null)
        {
            await transportWeb.DeliverAsync(myMessage);
        }
        else
        {
            Trace.TraceError("Failed to create Web transport.");
            await Task.FromResult(0);
        }
    }
}
这是我的注册控制器:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> _Register(BigViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser { UserName = model.RegisterViewModel.Email, Email = model.RegisterViewModel.Email };
        var result = await UserManager.CreateAsync(user, model.RegisterViewModel.Password);
        if (result.Succeeded)
        {
            //  Comment the following line to prevent log in until the user is confirmed.
             // await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

            // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
            // Send an email with this link
            string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
             var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
             await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

            // Uncomment to debug locally
            // TempData["ViewBagLink"] = callbackUrl;

            ViewBag.Message = "Check your email and confirm your account, you must be confirmed "
                            + "before you can log in.";

            return View("Info");

        }
        AddErrors(result);
    }

    return View("Register");

}
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务);
//取消注释以进行本地调试
//TempData[“ViewBagLink”]=回调URL;
ViewBag.Message=“检查您的电子邮件并确认您的帐户,您必须得到确认”
+“在您登录之前。”;
返回视图(“信息”);
}
加法器(结果);
}
返回视图(“寄存器”);
}
问题在哪里

提前谢谢

 private async Task configSendGridasync(IdentityMessage message,FormCollection fc)
{
    var myMessage = new SendGridMessage();
    myMessage.AddTo(message.Destination);
    myMessage.From = new MailAddress("YourEmail", "Joe S.");
    myMessage.AddTo(fc["Email"]);
    myMessage.Subject = message.Subject;
    myMessage.Text = message.Body;
    myMessage.Html = message.Body;
    var credentials = new NetworkCredential(
             ConfigurationManager.AppSettings["mailAccount"],
             ConfigurationManager.AppSettings["mailPassword"]
             );
    var transportWeb = new Web(credentials);

    if (transportWeb != null)
    {
        await transportWeb.DeliverAsync(myMessage);
    }
    else
    {
        Trace.TraceError("Failed to create Web transport.");
        await Task.FromResult(0);
    }
}
试试这个,兄弟

<appSettings>   
  <add key="webpages:Version" value="3.0.0.0" />
  <!-- Markup removed for clarity. -->      
  <add key="mailAccount" value="xyz" />
  <add key="mailPassword" value="password" />
</appSettings>

将应用程序设置存储在web.config文件中

试试这个,兄弟

<appSettings>   
  <add key="webpages:Version" value="3.0.0.0" />
  <!-- Markup removed for clarity. -->      
  <add key="mailAccount" value="xyz" />
  <add key="mailPassword" value="password" />
</appSettings>


将应用程序设置存储在web.config文件中…

Yo。我以前尝试过这种方法,但没有结果…只是为了确保…在web配置中,“邮件帐户值”属性用于sengrid帐户登录,对吗?@joint\u ops对不起…我已更新了代码段…myMessage.AddTo(“EmailTOSend@example.com");丢失…请重试兄弟…我认为添加myMessage.AddTo(“EmailTOSend@example.com"),这不是个好主意,因为我想将邮件发送到用户在我的注册表表单输入中键入的电子邮件地址,但我尝试过这种方法,但也没有结果…如果此解决方案在您的项目中运行良好,您可以发布您的注册表控制器吗?我将尝试进行一些复制和粘贴实现,看看会发生什么。。Peace@joint_ops好的,我明白了这…我已经用FormCollection输入更新了代码段…Fc[“Email”]使用ID=“Email”Name=“Email”从您的输入标记中获取值。仅供参考,使用var-transportWeb=new-Web(“SG.sendgrid-general-api-key-blah blah blah blah”);比使用var-credentials=new-NetworkCredential更可取(也比使用var-credentials=new-NetworkCredential更好)(ConfigurationManager.AppSettings[“mailAccount”]、ConfigurationManager.AppSettings[“mailPassword”]);var transportWeb=new Web(凭据);Yo.我以前尝试过这种方法,但没有结果…只是为了确保…在Web配置中“邮件帐户”值“属性用于sengrid帐户登录,对吗?@joint_ops对不起…我已更新了代码段…myMessage.AddTo(”EmailTOSend@example.com“”已丢失…请重试兄弟…我认为添加myMessage.AddTo(“”)EmailTOSend@example.com"),这不是个好主意,因为我想将邮件发送到用户在我的注册表表单输入中键入的电子邮件地址,但我尝试过这种方法,但也没有结果…如果此解决方案在您的项目中运行良好,您可以发布您的注册表控制器吗?我将尝试进行一些复制和粘贴实现,看看会发生什么。。Peace@joint_ops好的,我明白了这…我已经用FormCollection输入更新了代码段…Fc[“Email”]使用ID=“Email”Name=“Email”从您的输入标记中获取值。仅供参考,使用var-transportWeb=new-Web(“SG.sendgrid-general-api-key-blah blah blah blah”);比使用var-credentials=new-NetworkCredential更可取(也比使用var-credentials=new-NetworkCredential更好)(ConfigurationManager.AppSettings[“mailAccount”]、ConfigurationManager.AppSettings[“mailPassword”]);var transportWeb=new Web(凭据);可能重复的可能重复的