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 :..