Advertisement
Guest User

Untitled

a guest
Feb 10th, 2017
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.37 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3. using System.Collections.Generic;
  4. using System.Net.Mail;
  5.  
  6. namespace ConsoleApplication2
  7. {
  8. public class Mail
  9. {
  10. private SmtpClient sct = new SmtpClient();
  11.  
  12.  
  13. public Mail(string AsmtpHost, int Aport, System.Net.NetworkCredential Acredential, bool Assl)
  14. {
  15. if (AsmtpHost != "" && Aport > 0 && Acredential != null)
  16. {
  17. this.sct.Host = AsmtpHost;
  18. this.sct.Port = Aport;
  19. this.sct.Credentials = Acredential;
  20. this.sct.EnableSsl = Assl;
  21. }
  22. }
  23. public bool sendSMTP(MailMessage content)
  24. {
  25. bool send = true;
  26. SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
  27.  
  28. client.UseDefaultCredentials = false;
  29. client.Credentials = new System.Net.NetworkCredential("lazzyboyr", "Lade_loulou63");
  30. client.EnableSsl = true;
  31. client.Send(content);
  32.  
  33. return send;
  34. }
  35.  
  36. public MailMessage AddAppointment(string location, string message, List<string> recipients, string subject,
  37. string sender, int priority, string AppointementSubject, string description, DateTime start, DateTime end)
  38. {
  39. try
  40. {
  41. StringBuilder str = new StringBuilder();
  42. var m = new MailMessage();
  43. m.Sender = new MailAddress(sender);
  44. string FormatDate = "yyyyMMddTHHmmssZ";
  45. string iCal =
  46. @"BEGIN:VCALENDAR
  47. PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN
  48. VERSION:2.0
  49. METHOD:REQUEST
  50. X-MS-OLK-FORCEINSPECTOROPEN:TRUE
  51. BEGIN:VEVENT
  52. ATTENDEE;
  53. CN="+recipients[0].Split(new char[] { '@' })[0]+
  54. @" ;RSVP=TRUE;
  55. CLASS:PUBLIC
  56. CREATED:" +DateTime.Now.ToUniversalTime().ToString(FormatDate)+
  57. @" DESCRIPTION:"+description+
  58. @" DTEND;VALUE=DATE-TIME:"+end.ToUniversalTime().ToString(FormatDate)+
  59. @" DTSTAMP;VALUE=DATE-TIME:" + DateTime.Now.ToUniversalTime().ToString(FormatDate)+
  60. @" DTSTART;VALUE=DATE-TIME:" + start.ToUniversalTime().ToString(FormatDate)+
  61. @" LAST - MODIFIED:" + DateTime.Now.ToUniversalTime().ToString(FormatDate)+
  62. @" LOCATION:"+location+
  63. @" ORGANIZER;CN="+
  64. @" PRIORITY:"+priority+
  65. @" SEQUENCE: 0
  66. SUMMARY; LANGUAGE = fr - be:"+AppointementSubject+
  67. @"
  68. TRANSP: OPAQUE
  69. UID:" + Guid.NewGuid().ToString("B")+
  70. @"X - MICROSOFT - CDO - BUSYSTATUS:TENTATIVE
  71. X - MICROSOFT - CDO - IMPORTANCE:1
  72. X - MICROSOFT - CDO - INTENDEDSTATUS:BUSY
  73. X - MICROSOFT - DISALLOW - COUNTER:FALSE
  74. X - MS - OLK - ALLOWEXTERNCHECK:TRUE
  75. X - MS - OLK - AUTOSTARTCHECK:FALSE
  76. X - MS - OLK - CONFTYPE:0
  77. X - MS - OLK - SENDER; CN ="+sender+@"
  78. BEGIN: VALARM
  79. TRIGGER:-PT15M
  80. ACTION: DISPLAY
  81. DESCRIPTION:Reminder
  82. END:VALARM
  83. END:VEVENT
  84. END:VCALENDAR";
  85. string iCali =
  86. @"BEGIN:VCALENDAR
  87. PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//FR
  88. VERSION:2.0
  89. METHOD:PUBLISH
  90. X-MS-OLK-FORCEINSPECTOROPEN:TRUE
  91. BEGIN:VEVENT
  92. CLASS:PUBLIC"+
  93. @" CREATED:" + DateTime.Now.ToUniversalTime().ToString(FormatDate)+
  94. @" DESCRIPTION:" + description+
  95. @" DTEND:" + end.ToUniversalTime().ToString(FormatDate)+
  96. @" DTSTART:" + start.ToUniversalTime().ToString(FormatDate)+
  97. @" DTSTAMP:" + DateTime.Now.ToUniversalTime().ToString(FormatDate)+
  98. @" LAST-MODIFIED:" + DateTime.Now.ToUniversalTime().ToString(FormatDate)+
  99. @" LOCATION:" + location+
  100. @" PRIORITY:" + priority+
  101. @" SEQUENCE:0"+
  102. @" SUMMARY+LANGUAGE=en-us:test"+
  103. @" TRANSP:OPAQUE"+
  104. @" UID:" + Guid.NewGuid().ToString().ToUpperInvariant()+
  105. @" X-MICROSOFT-CDO-BUSYSTATUS:BUSY
  106. X-MICROSOFT-CDO-IMPORTANCE:1
  107. X-MICROSOFT-DISALLOW-COUNTER:FALSE
  108. X-MS-OLK-AUTOFILLLOCATION:FALSE
  109. X-MS-OLK-CONFTYPE:0
  110. BEGIN:VALARM
  111. TRIGGER:-PT60M
  112. ACTION:DISPLAY
  113. DESCRIPTION:Reminder
  114. END:VALARM
  115. END:VEVENT
  116. END:VCALENDAR";
  117. Console.WriteLine(iCal);
  118. using (var iCalView = AlternateView.CreateAlternateViewFromString(iCal, new System.Net.Mime.ContentType("text/calendar")))
  119. {
  120. m.AlternateViews.Add(iCalView);
  121. var c = new SmtpClient("smtp.gmail.com", 587);
  122. m.Subject = subject;
  123. m.Body = message;
  124. m.From = new MailAddress(sender);
  125. foreach (var item in recipients)
  126. {
  127. m.To.Add(item);
  128. }
  129. m.Sender = new MailAddress(sender);
  130. c.EnableSsl = true;
  131. c.UseDefaultCredentials = false;
  132. c.Credentials = new System.Net.NetworkCredential("lazzyboyr", "Lade_loulou63");
  133. c.Send(m);
  134.  
  135. }
  136. }
  137. catch (SmtpException ex)
  138. {
  139. throw new Exception("The followed error occurred: " + ex.Message);
  140. }
  141. return null;
  142. }
  143.  
  144.  
  145. /// <summary>
  146. /// send smtp mail with/out appointment
  147. /// </summary>
  148. /// <param name="emailbody">Corps du message(ce que vous avez à dire)</param>
  149. /// <param name="emailto">adresse mail du destinataire</param>
  150. /// <param name="startTime">objet dateTime du début de rendez vous</param>
  151. /// <param name="endTime">objet dateTime de la fin de rendez vous</param>
  152. /// <param name="SmtpHost">chaine de caractère représentant l'hôte du serveur smtp</param>
  153. /// <param name="port">port à utiliser pour la connnexion smtp</param>
  154. /// <param name="Credentials">Informations de connexion à utiliser pour se connecter au serveur smtp</param>
  155. /// <param name="emailfrom">adresse mail à utiliser pour envoyer le mail</param>
  156. /// <param name="namefrom">nom de l'envoyeur</param>
  157. /// <param name="subject">sujet de rendez-vous et objet du mail</param>
  158. public void test(string emailbody,string emailto, DateTime startTime, DateTime endTime, string emailfrom, string namefrom,
  159. string subject, bool Appointment)
  160. {
  161. string FormatDate = "yyyyMMddTHHmmssZ";
  162. string startTime1 = startTime.ToUniversalTime().ToString(FormatDate);
  163. string endTime1 = endTime.ToUniversalTime().ToString(FormatDate);
  164.  
  165. SmtpClient sc = this.sct;
  166.  
  167.  
  168. MailMessage msg = new MailMessage();
  169.  
  170. msg.From = new MailAddress("louis.rodde@outlook.com", "Mooi Test");
  171. msg.To.Add(new MailAddress(emailto));
  172. msg.Subject = "Holiday Approval";
  173. msg.Body = emailbody;
  174.  
  175. if (Appointment)
  176. {
  177. try
  178. {
  179. if (emailto.Split(new char[] { '@' })[1] == "outlook.com")
  180. {
  181. StringBuilder str = new StringBuilder();
  182. str.AppendLine("BEGIN:VCALENDAR");
  183.  
  184. //PRODID: identifier for the product that created the Calendar object
  185. str.AppendLine("PRODID:-//Microsoft//Outlook MIMEDIR//EN");
  186. str.AppendLine("VERSION:2.0");
  187. str.AppendLine("METHOD:REQUEST");
  188.  
  189. str.AppendLine("BEGIN:VEVENT");
  190.  
  191. str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", startTime1));
  192. str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
  193. str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", endTime1));
  194. str.AppendLine(string.Format("LOCATION: {0}", "Location"));
  195.  
  196. // UID should be unique.
  197. str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
  198. str.AppendLine(string.Format("DESCRIPTION:{0}", msg.Body));
  199. str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", msg.Body));
  200. str.AppendLine(string.Format("SUMMARY:{0}", msg.Subject));
  201.  
  202. str.AppendLine("STATUS:CONFIRMED");
  203. str.AppendLine("BEGIN:VALARM");
  204. str.AppendLine("TRIGGER:-PT15M");
  205. str.AppendLine("ACTION:Accept");
  206. str.AppendLine("DESCRIPTION:Reminder");
  207. str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY");
  208. str.AppendLine("END:VALARM");
  209. str.AppendLine("END:VEVENT");
  210.  
  211. str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", msg.From.Address));
  212.  
  213. foreach (var item in msg.To)
  214. {
  215. str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE:mailto:{1}", item.DisplayName, item.Address));
  216. }
  217. str.AppendLine("END:VCALENDAR");
  218. System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType("text/calendar");
  219. ct.Parameters.Add("method", "REQUEST");
  220. ct.Parameters.Add("name", "meeting.ics");
  221. AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(), ct);
  222. msg.AlternateViews.Add(avCal);
  223. }
  224. else
  225. {
  226. StringBuilder str = new StringBuilder();
  227. str.AppendLine("BEGIN:VCALENDAR");
  228.  
  229. //PRODID: identifier for the product that created the Calendar object
  230. str.AppendLine("PRODID:-//Google Inc// Google Calendar 70.9054//EN");
  231. str.AppendLine("VERSION:2.0");
  232. str.AppendLine("METHOD:REQUEST");
  233.  
  234. str.AppendLine("BEGIN:VEVENT");
  235.  
  236. str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", startTime1));
  237. str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
  238. str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", endTime1));
  239. str.AppendLine(string.Format("LOCATION: {0}", "Location"));
  240.  
  241. // UID should be unique.
  242. str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
  243. str.AppendLine(string.Format("DESCRIPTION:{0}", msg.Body));
  244. str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", msg.Body));
  245. str.AppendLine(string.Format("SUMMARY:{0}", msg.Subject));
  246.  
  247. str.AppendLine("STATUS:CONFIRMED");
  248. str.AppendLine("BEGIN:VALARM");
  249. str.AppendLine("TRIGGER:-PT15M");
  250. str.AppendLine("ACTION:Accept");
  251. str.AppendLine("DESCRIPTION:Reminder");
  252. str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY");
  253. str.AppendLine("END:VALARM");
  254. str.AppendLine("END:VEVENT");
  255.  
  256. str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", msg.From.Address));
  257. str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE:mailto:{1}", msg.To[0].DisplayName, msg.To[0].Address));
  258.  
  259. str.AppendLine("END:VCALENDAR");
  260. System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType("text/calendar");
  261. ct.Parameters.Add("method", "REQUEST");
  262. ct.Parameters.Add("name", "meeting.ics");
  263. AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(), ct);
  264. msg.AlternateViews.Add(avCal);
  265. }
  266. }
  267. catch (Exception)
  268. {
  269. throw;
  270. }
  271. }
  272. sc.Send(msg);
  273. }
  274. }
  275. class Program
  276. {
  277. static void Main(string[] args)
  278. {
  279. Mail pop = new Mail("smtp.gmail.com", 587, new System.Net.NetworkCredential("lazzyboyr", "Lade_loulou63"), true);
  280. MailMessage MM = new MailMessage("lazzyboyr@gmail.com", "louis.rodde@outlook.com", "test", "J'aime les chats");
  281. // pop.sendSMTP(MM);
  282. // pop.AddAppointment("Satan's house", "All Mighty Lucifer", new List<string> { "louis.rodde@outlook.com" }, "Satan's Project", "louis.rodde@inforsud.com", 5,"We will conquer the world", "Ready to conquer the World ?", new DateTime(1997, 10, 7, 19, 11, 25), new DateTime(2031, 7, 15, 1, 24, 12));
  283. pop.test("they're coming for you","lazzyboyr@gmail.com", new DateTime(1997, 10, 7, 19, 11, 25), new DateTime(2031, 7, 15, 1, 24, 12), "louis.rodde@outlook.com", "louis", "Rendez-Vous St Lary", true);
  284. Console.Write("avec");
  285. pop.test("Unless...", "louis.rodde@outlook.com", new DateTime(1997, 10, 7, 19, 11, 25), new DateTime(2031, 7, 15, 1, 24, 12), "lazzyboyr@gmail.com", "louis", "Rendez-Vous St Lary", true);
  286. Console.Write("sans");
  287. pop.test("You kill yourself now!", "louis.rodde@outlook.com", new DateTime(1997, 10, 7, 19, 11, 25), new DateTime(2031, 7, 15, 1, 24, 12), "lazzyboyr@gmail.com", "louis", "Rendez-Vous St Lary", false);
  288. Console.ReadKey();
  289. }
  290. }
  291. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement