vivek gupta Ответов: 1

Я использую проверку электронной почты в ASP.NET MVC, но он не работает?


я использую метод электронной почты для проверки в моем asp.net mvc и установите gmail allow app security access level low :on, но все равно он не работает . Он не бросает никаких исключений .Раньше этот код работал отлично, и проверка электронной почты выполнялась корректно, но с последних нескольких дней он не работает .

Что я уже пробовал:

private ActionResult SendEmail(MailMessage mail)
       {
           SmtpClient client = new SmtpClient();
           client.Host = "smtp.gmail.com";
           client.Port = 587;
           client.EnableSsl = true;
           client.UseDefaultCredentials = false;
           client.DeliveryMethod = SmtpDeliveryMethod.Network;
           client.Credentials = new System.Net.NetworkCredential("emailid,"password");
           try
           {
               client.Send(mail);

           }
           catch (Exception ex) { return RedirectToAction("home"); }
           return RedirectToAction("home2");
       }

public ActionResult sendemail2(string subjectText, string bodyText, string sendTo, string from)
       {
           string to, bcc, cc, subject, body;

           to = sendTo.Trim();
           bcc = "";
           cc = "";
           subject = subjectText;
           StringBuilder sb = new StringBuilder();
           sb.Append(bodyText);
           body = sb.ToString();
           MailMessage mail = new MailMessage();
           mail.From = new MailAddress(from);
           mail.To.Add(new MailAddress(to));
           if (!string.IsNullOrEmpty(bcc))
           {
               mail.Bcc.Add(new MailAddress(bcc));
           }
           if (!string.IsNullOrEmpty(bcc))
           {
               mail.Bcc.Add(new MailAddress(cc));
           }
           mail.Subject = subject;
           mail.Body = body;
           mail.IsBodyHtml = true;

           SendEmail(mail);
           return RedirectToAction("home");
       }

public ActionResult sendemail3(string textboxemailid)
       {
           string body = System.IO.File.ReadAllText(HostingEnvironment.MapPath("~/EmailTemplate/") + "text" + ".cshtml");
           var regInfo = db.xyztables.Where(x => x.emailid == textboxemailid).FirstOrDefault();

           var pass = db.xyztables.Where(x => x.emailid == textboxemailid).Select(x => x.password).FirstOrDefault();

           body = body.Replace("@ViewBag.pass", pass);
           body = body.ToString();
           string from = "emailid";
           sendemail2("Your Details", body, regInfo.emailid, from);
           Session["check"] = "Please check your email";
           return View("check");
       }

public void sendemail4(int regid)
  {
      string body = System.IO.File.ReadAllText(HostingEnvironment.MapPath("~/EmailTemplate/") + "Text" + ".cshtml");
      var regInfo = db.xyztables.Where(x => x.id == regid).FirstOrDefault();
      string regem = db.xyztables.Where(x => x.id == regid).Select(x => x.emailid).FirstOrDefault();
      var url = "http://xyz.com/" + "xyztables/Confirm?regem="+ regem;

      body = body.Replace("@ViewBag.ConfirmationLink", url);
      body = body.ToString();
      string from = "emailid";
      BuildEmailTemplate("Activate your Account", body, regInfo.emailid,from);

  }

  [HttpPost]

  public ActionResult Signup(string textbox1emailid, string textboxname, string textboxpass ,  string Create)
  {
      var checkdb = db.xyztables.Where(x => x.emailid == textbox1emailid).FirstOrDefault();
      if (checkdb == null)
      {
          xyztable table = new xyztable();
          xyztable.emailid = textbox1emailid.ToString();
          xyztable.name = textbox1name.ToString();
          xyztable.password = textbox1pass.ToString();
          xyztable.emailconfirmed = 0;
          db.xyztables.Add(xyztable);
          db.SaveChanges();
          sendemail4(xyztable.id);
          Session["check"] = "Please check your emailid to confirm your Account";
          return RedirectToAction("home");
      }
      else { Session["message"] = "Emailid already exists";
          return View("Signin");
      }
         }

Richard MacCutchan

Может быть, потому, что gmail не предоставляет неограниченную бесплатную службу обмена сообщениями. Используйте свой собственный провайдер электронной почты и посмотрите, работает ли он лучше.

vivek gupta

ладно.Спасибо.

MadMyche

Было бы полезно узнать полную историю; например, сообщить нам, связано ли это с вашей тестовой учетной записью или с новой учетной записью, которую вы создали?
5 дней назад: "я сделал грубый аккаунт gmail для тестирования и сделал изменения примерно так ,что я забыл ,используя этот gmail, но когда я сделал новый для правильной основы, он не работает"

1 Ответов

Рейтинг:
7

F-ES Sitecore

Если он работал, а теперь нет, проблема вряд ли будет в вашем коде. Это будет проблема network\config\gmail. Google для многих проблем, с которыми вы можете столкнуться при отправке электронной почты через gmail, так как это один из самых часто задаваемых вопросов.

"Правильный" ответ заключается в том, чтобы вообще не использовать SMTP-сервер gmail, используйте SMTP-сервер, предоставленный вашим сетевым администратором или веб-хостом, в зависимости от того, где работает ваш код.

Вещи, на которые вы не должны тратить время | The ASP.NET форумы[^]


MadMyche

К вашему сведению - на прошлой неделе произошло изменение кода; я использовал "тестовую" учетную запись, которая работала, и она не работала с "новой" учетной записью

F-ES Sitecore

Однако это не изменение кода остановило его работу, а новая учетная запись. Вероятно, вы не включили программный SMTP на этой учетной записи, или она ждет ответа captcha и т. д.

vivek gupta

я включил imtp и разрешил app security access level low :on и даже учетная запись gmail намного старше, но все равно она не работает