Отправить уведомление по электронной почте при присвоении билета - ASP. NET MVC C# - PullRequest
0 голосов
/ 04 августа 2020

Я хочу уведомить пользователя, когда ему / ей был назначен билет по почте. Администратор в основном видит открытые заявки и раскрывающийся список, содержащий пользователей. После назначения билета пользователь должен получить уведомление на свой почтовый ящик.

Я пробовал следующее, но продолжаю сталкиваться с ошибкой:

Значение не может быть нулевым. Имя параметра: адреса

в параметре 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;
        }
}

Я использую интерфейсы, так что ниже код для SaveAssignedRoles:

public bool SaveAssignedRoles(AssignRolesModel AssignRolesModel)
{
        bool result;

        try
        {
            for (int i = 0; i < AssignRolesModel.ListofUser.Count(); i++)
            {
                if (AssignRolesModel.ListofUser[i].SelectedUsers)
                {
                    AssignedRoles AssignedRoles = new AssignedRoles
                    {
                        AssignedRolesID = 0,
                        AssignToAdmin = AssignRolesModel.RegistrationID,
                        CreatedOn = DateTime.Now,
                        CreatedBy = AssignRolesModel.CreatedBy,
                        Status = "A",
                        RegistrationID = AssignRolesModel.ListofUser[i].RegistrationID,
                       // RegID = AssignRolesModel.ListofAdmins[i].RegistrationID
                    };

                    DB.AssignedRoles.Add(AssignedRoles);
                    DB.SaveChanges();
                }
            }

            result = true;
        }
        catch (Exception)
        {
            throw;
        }

        return result;
}

1 Ответ

0 голосов
/ 04 августа 2020

Убедитесь, что 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...