Я работаю над приложением asp.net c #, которое отправляет электронное письмо с одним вложением.Вложение - это файл vCalendar.Вот код:
StringBuilder sbCalendar = new StringBuilder();
DateTime dtStart = eventDate;
DateTime dtEnd = eventDate;
sbCalendar.AppendLine("METHOD: REQUEST");
sbCalendar.AppendLine("BEGIN:VCALENDAR");
sbCalendar.AppendLine("PRODID:-//DP//NET");
sbCalendar.AppendLine("MIMEDIR//ENVERSION:1.0");
sbCalendar.AppendLine("METHOD:REQUEST");
sbCalendar.AppendLine("BEGIN:VEVENT");
sbCalendar.AppendLine("DTSTAMP:" + dtStart.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z"));
sbCalendar.AppendLine("DTSTART:" + dtStart.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z"));
sbCalendar.AppendLine("DTEND:" + dtEnd.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z"));
sbCalendar.AppendLine("LOCATION:" + eventLocation);
sbCalendar.AppendLine("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:" + eventBody);
sbCalendar.AppendLine("SUMMARY:" + eventSubject);
sbCalendar.AppendLine("PRIORITY:3");
sbCalendar.AppendLine("UID:" + Guid.NewGuid().ToString());
sbCalendar.AppendLine("ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION:MAILTO:required@participant.foo");
sbCalendar.AppendLine("ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:MAILTO:chair@foo.foo");
sbCalendar.AppendLine("CLASS:PUBLIC");
sbCalendar.AppendLine("ORGANIZER:MAILTO:organizer@foo.foo");
sbCalendar.AppendLine("SEQUENCE:0");
sbCalendar.AppendLine("STATUS:TENTATIVE");
sbCalendar.AppendLine("END:VEVENT");
sbCalendar.AppendLine("END:VCALENDAR");
byte[] byteArray = Encoding.UTF8.GetBytes(sbCalendar.ToString());
Stream contentStream = new MemoryStream(byteArray);
SmtpClient smtp = new SmtpClient("localhost");
MailMessage memo = new MailMessage();
memo.IsBodyHtml = true;
memo.From = new MailAddress("from@ddress.foo");
foreach (string emailAddress in emailAddresses)
{
memo.To.Add(emailAddress);
}
memo.Body = messageBody;
memo.Subject = messageSubject;
Attachment attachment = new Attachment(contentStream, "termenLitigiu.ics", "text/calendar");
attachment.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
memo.Attachments.Add(attachment);
smtp.Send(memo);
Это работает и делает то, что должно делать, отправляет рабочий (распознаваемый outlook) файл vcalendar.
Проблема в том, что в телеmail, кроме содержимого параметра messageBody, также отображается содержимое вложенного файла, что-то вроде этого:
От: отправитель Отправлено: вторник, 5 октября 2010 г. 16:59 Кому: someemail
message Здесь содержится содержимое
МЕТОД: НАЧАТЬ ЗАПРОС: VCALENDAR PRODID: - // DP // NET MIMEDIR // ENVERSION: 1.0 МЕТОД: ЗАПРОС НАЧАТЬ: VEVENT DTSTAMP: 20101006T135934Z DTSTART: 20101006T13520101006T135934Z РАСПОЛОЖЕНИЕ: Minstead ОПИСАНИЕ; КОДИРОВАНИЕ = ЗАПИСАНО-ПЕЧАТАЮЩАЯ: Моя первая встреча РЕЗЮМЕ: Обучение календарному планированию и составлению расписаний ПРИОРИТЕТ: 3 UID: 721d9e3c-9010-47f5-9ad0-83c38cb0cETT-RETENT-REETENT-RESETT-PARTE;: someemail ATTENDEE; ROLE = CHAIR; PARTSTAT = ACCEPTED: MAILTO: someemail CLASS: PUBLIC ORGANIZER: MAILTO: someemail ПОСЛЕДОВАТЕЛЬНОСТЬ: 0 СОСТОЯНИЕ: TENTATIVE END: VEVENT END: VCALENDAR
Я хочу избавиться от этого текста и отображать только содержимое моего параметра messageBody, а файл vCalendar просто присоединяется к почтовому сообщению.Как я могу это сделать?Это проблема внешнего вида или проблема кодирования?
Редактировать: меня интересует только отображение сообщения в Microsoft Outlook.Я посмотрел на источник сообщения (в Outlook щелкните правой кнопкой мыши> Просмотр источника), и текст, от которого я хочу избавиться, находится в <body
> </body
> html-тегах сообщения)