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); }
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()); }
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); }