Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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#_C#_Asp.net Mvc - Fatal编程技术网

分配票证时发送电子邮件通知-ASP.NET MVC#

分配票证时发送电子邮件通知-ASP.NET MVC#,c#,asp.net-mvc,C#,Asp.net Mvc,我希望在通过邮件向用户分配票证时通知他/她。 管理员基本上有一个打开票据的视图和一个包含用户的下拉列表。一旦分配了票证,用户应在其邮箱中收到通知 我尝试了以下操作,但一直遇到错误: 值不能为空。 参数名称:地址 在Mail.To参数上 负责分配的代码如下所示: public async Task<ActionResult> AssignRoles(AssignRolesModel ObjAssign, Registration registration) { try

我希望在通过邮件向用户分配票证时通知他/她。 管理员基本上有一个打开票据的视图和一个包含用户的下拉列表。一旦分配了票证,用户应在其邮箱中收到通知

我尝试了以下操作,但一直遇到错误:

值不能为空。
参数名称:地址

Mail.To
参数上

负责分配的代码如下所示:

public async Task<ActionResult> AssignRoles(AssignRolesModel ObjAssign, Registration registration)
{
        try
        {
            if (ObjAssign.ListofUser == null)
            {
                TempData["MessageErrorRoles"] = "No Tickets to assign";
                ObjAssign.ListofAdmins = _IAssignRoles.ListofAdmins();
                ObjAssign.ListofUser = _IAssignRoles.ListofUser();
                return View(ObjAssign);
            }

            var SelectedCount = (from User in ObjAssign.ListofUser
                                 where User.SelectedUsers == true
                                 select User).Count();

            if (SelectedCount == 0)
            {
                TempData["MessageErrorRoles"] = "You have not Selected any Ticket to Assign";
                ObjAssign.ListofAdmins = _IAssignRoles.ListofAdmins();
                ObjAssign.ListofUser = _IAssignRoles.GetListofUnAssignedUsers();
                return View(ObjAssign);
            }

            if (ModelState.IsValid)
            {
                ObjAssign.CreatedBy = Convert.ToInt32(Session["SuperAdmin"]);
                _IAssignRoles.SaveAssignedRoles(ObjAssign);
            }

            ObjAssign = new AssignRolesModel
            {
                ListofAdmins = _IAssignRoles.ListofAdmins(),
                ListofUser = _IAssignRoles.GetListofUnAssignedUsers()
            };

            MailMessage mail = new MailMessage();
            mail.To.Add(registration.EmailID);
            mail.Subject = "Help Desk";
            mail.IsBodyHtml = true;

            using (var smtp = new SmtpClient())
            {
                await smtp.SendMailAsync(mail);
                smtp.UseDefaultCredentials = false;
            }

            TempData["MessageRoles"] = "Ticket Assigned Successfully!";

            return RedirectToAction("AssignRoles");
        }
        catch (Exception)
        {
            throw;
        }
}

确保registration.Email不为空/空

另外,我认为您可以像这样直接将电子邮件传递给MailMessage

if(!string.IsNullOrEmpty(registration.EmailID))
{
     var email = new MailMessage(from, registration.EmailID);
}
或者,如果您想坚持您的代码:

if(!string.IsNullOrEmpty(registration.EmailID))
{
    MailMessage mail = new MailMessage();
    mail.To.Add(registration.EmailID);
}

我想你可能需要“更新”邮件。在使用之前?或者直接将MailAddress传递给MailMessage。并确保registration.Email不为空。因此,请查看并调试代码<代码>注册。EmailID为
null
。您提供的代码很好。它解决了空电子邮件id的问题,但没有解决向用户发送通知的主要问题。我收到一个警报“ticket successfully assigned”,但没有发送任何ticket。您仍然没有向我们提供足够的信息。你没有例外吗?你能给我们看一下你的smtp配置吗?这个问题是由这个字段
mail.To.Add(registration.EmailID)引起的如果我将其替换为实际电子邮件,则该操作成功,否则不会运行任何操作。没有遇到任何异常那么你有一个验证问题,对吗?如果你允许用户输入无效的电子邮件,它将无法工作,就这么简单。添加验证并使用它完成:)
if(!string.IsNullOrEmpty(registration.EmailID))
{
    MailMessage mail = new MailMessage();
    mail.To.Add(registration.EmailID);
}