e-posta (e-mail) ile Takvime Toplantı / Randevu Ekleme

Merhaba Arkadaşlar.

Dday.ical kütüphanesini kullanarak kullanıcılırınıza toplantı daveti gönderebilirsiniz. tüm eposta sistemleri ve takvim sistemlerini desteklemektedir.

Manage Nuget Packageden Dday aratarak kendi referanslarınıza paketi indirebilirsiniz.

Sonrasında mail gönderebilmeniz için web configde smt ayarlarınızı oluşturunuz.

  <system.net>
    <mailSettings>
        <smtp from="noreply@xyz.com">
        <network enableSsl="false" host="mail.xyz.com" port="587" userName="noreply@xyz.com" password="??????" />
      </smtp>     
    </mailSettings>
  </system.net>

bu ayarıda yaptıkdan sonra controllerda kodu yazmaya başlayabilirsiniz.


            //dosya sisteminde dosyanızı nereye kaydedeceksiniz konumu belirtiniz. 
            string filepath = Server.MapPath("~/Uploads/") + "meeting.ics"; 
            const string METHOD = "REQUEST";
            
            
            // uid vererek herseferinde farklı toplantı oluşturmunıza yardımcı olacaktır yada ileride iptel etmek içinde bunu kullanabilirsiniz
            Guid uid =  Guid.NewGuid();
            string VisBetreff = "Toplantı kısa konusunu yazabilirsinz";
            string TerminVerantwortlicherEmail = "ekleyen kişi";
            string location ="Toplantı konumu";
            string bodyPlainText = "Toplantı içeriği ";
            int priority = 1;//önem sırası 
            string htmlbody = "MAil içersindeki yazı alanı ";
            MailMessage message = new MailMessage();

          // message.From = new MailAddress("noreplay@xxx.com");
            message.To.Add(new MailAddress("gonderilecek-kisi@eposta.adresi"));
            message.Subject = "[Topantı Daveti] " + VisBetreff;

           
            message.Body = bodyPlainText;
            AlternateView HTMLV = AlternateView.CreateAlternateViewFromString(htmlbody,
            new System.Net.Mime.ContentType("text/html"));
            IICalendar iCal = new iCalendar();
            iCal.Method = METHOD;
            iCal.ProductID = "Toplantı";

            //yeni bir etkinlik oluşturup mail içeriğine eklenir
            Event evt = iCal.Create<Event>();
            evt.UID = uid.ToString();

            evt.Class = "PUBLIC";
            // outlook için gerekli 
            evt.Created = new iCalDateTime(DateTime.Now);

            evt.DTStamp = new iCalDateTime(DateTime.Now);
            evt.Transparency = TransparencyType.Transparent;

            // Set the event start / end times
            evt.Start = new iCalDateTime("05.06.2016 10:00:00");
            evt.End = new iCalDateTime("05.06.2016 12:00:00");
            evt.Location = location;
            evt.Description = meetingdata.ContentOfMeeting;
            var prop = new CalendarProperty("X-ALT-DESC");
            prop.AddParameter("FMTTYPE", "text/html");
            prop.AddValue(htmlbody);
            evt.AddProperty(prop);


            evt.Summary = VisBetreff;
            evt.Priority = priority;


          
            iCalendarSerializer serializer = new iCalendarSerializer();
            serializer.Serialize(iCal, filepath);

            // the .ics File as a string
            string iCalStr = serializer.SerializeToString(iCal);

            // .ics as AlternateView (used by Outlook)
            // text/calendar part: method=REQUEST
            System.Net.Mime.ContentType calendarType =
              new System.Net.Mime.ContentType("text/calendar");
            calendarType.Parameters.Add("method", METHOD);
            AlternateView ICSview =
              AlternateView.CreateAlternateViewFromString(iCalStr, calendarType);

            // mail mesajı
            message.AlternateViews.Add(HTMLV);
            message.AlternateViews.Add(ICSview); // en son kısımda eklenmeli

            //outlook dışındaki mail sisstemleri için .ics as ek dosya olarak gönderecez
            Byte[] bytes = System.Text.Encoding.ASCII.GetBytes(iCalStr);
            var ms = new System.IO.MemoryStream(bytes);
            var a = new System.Net.Mail.Attachment(ms,
              "VIS-Termin.ics", "text/calendar");
            message.Attachments.Add(a);

            // ve hazırladığımız  maili gönderiyoruz 
            SmtpClient client = new SmtpClient();
            client.Send(message);


..:Happy cooding :..

Makale Tarihi: 30.05.2016 Gücellenme Tarihi: 22.02.2018

Yorum Yaz

Yorumlarınız denetimden geçtikten sonra yayınlanmaktadır...