Пример #1
0
        public bool sendMail(Person per, Pollution pol, bool data, bool service)
        {
            bool notSend = true;

            using (SmtpClient client = new SmtpClient())
            {
                var credential = new NetworkCredential
                {
                    UserName = "******",
                    Password = "******"
                };
                client.Credentials = credential;
                client.Host        = "smtp.gmail.com";
                client.Port        = 587;
                client.EnableSsl   = true;

                var message = new MailMessage();

                message.To.Add(new MailAddress(per.Mail));
                message.From = new MailAddress("[MAIL]");
                String   sDate     = DateTime.Now.ToString();
                DateTime datevalue = (Convert.ToDateTime(sDate.ToString()));
                message.Subject    = "Informacja o zanieczyszczeniu powietrza " + datevalue.Day.ToString() + "-" + datevalue.Month.ToString() + "-" + datevalue.Year.ToString();
                message.Body       = buildMessageString(per, pol, data, service);
                message.IsBodyHtml = true;

                try
                {
                    client.Send(message);
                    Console.WriteLine("Wiadomość została wysłana.");
                }
                catch (SmtpFailedRecipientException ex)
                {
                    Console.WriteLine("Błąd wysyłania!");
                    notSend = false;
                }
            }
            return(notSend);
        }
Пример #2
0
        private string buildMessageString(Person per, Pollution pol, bool data, bool service)
        {
            StringBuilder message = new StringBuilder();
            string        header  = "Dzień dobry " + per.FirstName + "! <br />";

            message.Append(header).AppendLine().AppendLine();
            if (data == true)
            {
                message.Append("Przesyłam informację o dzisiejszym stanie powietrza w Twojej okolicy: <br /><br />").AppendLine().AppendLine();
                message.Append("Nazwa stacji pomiarowej: " + pol.Name + "<br />").AppendLine();
                message.Append("Data pomiaru: " + pol.Date + "<br /><br />").AppendLine();
                message.Append("<b>PM10: " + pol.Pm10 + "µg/m3 </b><br />").AppendLine();

                if (pol.Pm10 > 50)
                {
                    message.Append("Norma przekroczona! <font color=\"red\">" + pol.Pm10 * 100 / 50 + "%</font> normy<br />").AppendLine();
                }
                else
                {
                    message.Append("Norma nie przekroczona. <font color=\"teal\">" + pol.Pm10 * 100 / 50 + "%</font> normy<br />").AppendLine();
                }

                message.Append("<i>Norma średniego dobowego stężenia pyłu: 50 µg/m3</i><br /><br />");
                message.Append("<b>PM2,5: " + pol.Pm25 + "µg/m3 </b><br />").AppendLine();

                if (pol.Pm25 > 25)
                {
                    message.Append("Norma przekroczona! <font color=\"red\">" + pol.Pm25 * 100 / 25 + "%</font> normy<br />").AppendLine();
                }
                else
                {
                    message.Append("Norma nie przekroczona. <font color=\"teal\">" + pol.Pm25 * 100 / 25 + "</font>% normy<br />").AppendLine();
                }

                message.Append("<i>Norma średniego dobowego stężenia pyłu: 25 µg / m3</i><br /><br />");

                if (!String.IsNullOrWhiteSpace(pol.State))
                {
                    message.Append("Indeks jakości powietrza: " + pol.State + "<br /><br />").AppendLine().AppendLine();
                }

                if (service == true)
                {
                    message.Append("<font color=\"gray\">Dostęp do danych został udostępniony przez firmę:<br />").AppendLine();
                    message.Append(" LookO2   http://www.looko2.com/ <br /><br /></font>").AppendLine().AppendLine();
                }
                else
                {
                    message.Append("<font color=\"gray\">Dostęp do danych został udostępniony przez firmę:<br />").AppendLine();
                    message.Append(" Airly   https://airly.eu/pl/ <br /><br /></font>").AppendLine().AppendLine();
                }
            }
            else
            {
                message.Append("Niestety nie udało się pobrać dzisiejszych danych z pobliskiej stacji.<br />").AppendLine();
                message.Append("Jeżeli problem będzie się powtarzał skontaktuj się z administratorem.<br /><br />").AppendLine().AppendLine();;
            }
            message.Append("<font color=\"gray\">Twórca systemu: Jakub Rejent</font><br />");

            return(message.ToString());
        }
Пример #3
0
        private static void sendNotification(TraceWriter log)
        {
            List <Person>      personList = new List <Person>();
            DatabaseConnection connect    = new DatabaseConnection();
            GetPollution       getter     = new GetPollution();
            Task <string>      result;
            MailSender         send  = new MailSender();
            DateTime           start = DateTime.Now;
            bool look02Data;
            bool data;
            int  members;
            int  airly, looko2;
            bool notSend;
            int  errors;

            airly  = 0;
            looko2 = 0;
            errors = 0;

            connect.getPersonListFromDatabase(personList);
            members = personList.Count;

            for (int i = 0; i < personList.Count; i++)
            {
                data       = true;
                look02Data = true;
                Pollution pol = new Pollution();
                log.Info($"Wysylam dane do: " + personList[i].FirstName + " " + personList[i].LastName + " " + personList[i].Mail);
                result = getter.get("http://api.looko2.com/?method=GPSGetClosestLooko&lat=" + personList[i].Lan + "&lon=" + personList[i].Lng + "&token=[TOKEN]");

                //airly
                if (String.IsNullOrWhiteSpace(result.Result) || !result.Result.Contains("PM"))
                {
                    look02Data = false;
                    result     = getter.get("https://airapi.airly.eu/v1/nearestSensor/measurements?latitude=" + personList[i].Lan + "&longitude=" + personList[i].Lng + "&maxDistance=10000&apikey=[APIKEY]");
                    if (!String.IsNullOrWhiteSpace(result.Result) && result.Result.Contains("pm"))
                    {
                        JObject o = JObject.Parse(result.Result);

                        pol.Name  = (string)o.SelectToken("name");
                        pol.Pm10  = (int)float.Parse(((string)o.SelectToken("pm10")), CultureInfo.InvariantCulture.NumberFormat);
                        pol.Pm25  = (int)float.Parse(((string)o.SelectToken("pm25")), CultureInfo.InvariantCulture.NumberFormat);
                        pol.State = (string)o.SelectToken("airQualityIndex");
                        pol.Date  = DateTime.Now;
                        airly++;
                    }
                    else
                    {
                        log.Info("BRAK DANYCH DLA TEJ LOKACJI");
                        data = false;
                    }
                }
                else
                {
                    JObject o = JObject.Parse(result.Result);

                    pol.Name  = (string)o.SelectToken("Name");
                    pol.Pm10  = Int32.Parse((string)o.SelectToken("PM10"));
                    pol.Pm25  = Int32.Parse((string)o.SelectToken("PM25"));
                    pol.State = (string)o.SelectToken("IJPString");
                    pol.Date  = DateTime.Now;
                    looko2++;
                }

                notSend = send.sendMail(personList[i], pol, data, look02Data);

                if (notSend == false)
                {
                    errors++;
                }
            }
            send.sendDiagnostic(members, (DateTime.Now - start).ToString(), looko2, airly, errors);
        }