代码之家  ›  专栏  ›  技术社区  ›  Batuhan

邮件服务发送丢失的邮件

  •  0
  • Batuhan  · 技术社区  · 7 年前

    我做了邮件服务。当我调试从数据库接收到的数据时,它会将其全部发送出去,但当我运行服务时,它会发送一些数据。这是什么原因?

    数据库中有10条记录。它完全随调试一起发送。当我运行 Windows服务 使用F5调试 , 某些部分 我希望我能告诉你我的问题。

    我认为问题是我的邮件中没有“标题”。你的想法是什么?

    同时,我为我的英语不好道歉。 Please open the image

      public bool SendMail(string Body, string Subject, List<string> ToList)
        {
            MailMessage mail = new MailMessage();
            mail.From = From;
            bool ReturnValue = false;
            if (ToList.Count < 0)
            {
                return ReturnValue;
            }
    
            foreach (string Mailaddress in ToList)
            {
                mail.To.Add(Mailaddress);
            }
            mail.Subject = Subject; 
            mail.Body =  Body ;
            try
            {
                ServicePointManager.ServerCertificateValidationCallback =
                delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
                { return true; };
                Client.Send(mail);
                ReturnValue = true;
            }
            catch (Exception ex)
            {
                ILog log = LogManager.GetLogger(typeof(MailHelper));
                log.Error(ex.Message, ex);
            }
    
            return ReturnValue;
        }
    
     protected MailHelper()
        {
            Client = new SmtpClient(ConfigurationManager.AppSettings["SmtpClient"].ToString());
            From = new MailAddress(ConfigurationManager.AppSettings["MailAddressFrom"].ToString(), ConfigurationManager.AppSettings["MailAddressFromDisplayName"].ToString());
            //ToList = new List<string>{"trying@trying.com.tr"};   
            Client.Port = Convert.ToInt32(ConfigurationManager.AppSettings["PortNumber"]);
            Client.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["UserName"], ConfigurationManager.AppSettings["Password"]);
            Client.EnableSsl = true;
        }
    
    
    <add key="log4net.Config" value="App.config" />
    <add key="log4net.Config.Watch" value="True" />
    <add key="ClientSettingsProvider.ServiceUri" value="" />
    <add key="TimerInterval" value="3000" />
    <add key="constr" value="Data Source=.;Initial Catalog=MailSending;Integrated Security=False;Persist Security Info=True;Integrated Security=SSPI"/>
    
     DateTime davaTarih = Convert.ToDateTime(row["ModuleDate"]);
                                DateTime sonrakiDurusmaTarihi = Convert.ToDateTime(row["FollowingTrialDate"]);
                                string avukatName = row["Username"].ToString();
                                string esasNo = row["No"].ToString();
                                int countDays = Convert.ToInt32(row["countDays"]);
                                string kisaAciklama = row["ShortDescription"].ToString();
                                string sonrakidurusmaTar = "";
    
                                if (!DBNull.Value.Equals(row["FollowingTrialDate"]) && !DBNull.Value.Equals(row["countDays"]))
                                {
                                    sonrakiDurusmaTarihi = Convert.ToDateTime(row["FollowingTrialDate"]);
                                }
                                else
                                {
                                    sonrakiDurusmaTarihi = Convert.ToDateTime("");
                                    sonrakidurusmaTar = "Sonraki Duruşma Bulunmamaktadır.";
                                    // var sonrakiDurusma = DateTime.TryParse(SonrakidurusmaTar, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out sonrakiDurusmaTarihi);  // FollowingTrialDate, null olarak gelirse hata vermesin amacıyla yazıldı.
                                }
    
                                ModuleSubject = " Mnemonic Hatırlatma Servisi";
                                ModuleBody = "Sayın ilgili, ;\r\n \r\n" +
                                        "Modül: " + ModuleName + ";\r\n" +
                                        "Esas no: " + esasNo + ";\r\n" +
                                        "Dava tarihi: " + davaTarih.ToShortDateString() + ";\r\n" +
                                        "Sonraki duruşma tarihi: " + sonrakiDurusmaTarihi.ToShortDateString() + ";\r\n" +
                                        "Kalan Gün Sayısı: " + countDays + ";\r\n" +
                                        "Kısa açıklama: " + kisaAciklama + ";\r\n\r\n" +
                                        "Bilginize,";
    
                         MailHelper.Instance.SendMail(ModuleBody, ModuleSubject, ToList);
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Batuhan    7 年前

    我找到了答案。因为它发送邮件很快,所以发送不完整。解决方案是:我在发送邮件前后每秒钟等待六次,然后就没有问题了。

    System.Threading.Thread.Sleep(6000); 
    Client.Send(mail); 
    System.Threading.Thread.Sleep(6000);