1


0

添付ファイルのコンテンツがメッセージの本文に表示されないようにするにはどうすればよいですか?

私は、1つの添付ファイル付きの電子メールを送信する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:[email protected]");
            sbCalendar.AppendLine("ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:MAILTO:[email protected]");
            sbCalendar.AppendLine("CLASS:PUBLIC");
            sbCalendar.AppendLine("ORGANIZER:MAILTO:[email protected]");
            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("[email protected]");

            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ファイルを送信します。

問題は、メッセージの本文に、messageBodyパラメーターの内容の他に、添付ファイルの内容も表示されることです。これは次のようなものです。

差出人:送信者送信:2010年10月5日火曜日16:59 PM宛先:someemail

_ _ messageBodyのコンテンツはこちら

メソッド:REQUEST BEGIN:VCALENDAR PRODID:-// DP // NET MIMEDIR // ENVERSION:1.0メソッド:REQUEST BEGIN:VEVENT DTSTAMP:20101006T135934Z DTSTART:20101006T135934Z DTEND:20101006T135934Z LOCATION:Minstead DESCRIPTION; ENCODINGABLE = QUOTED = PRINT要約:カレンダーとスケジュールの学習PRIORITY:3 UID:721d9e3c-9010-47f5-9ad0-83c38cb0cbb7 ATTENDEE; ROLE = REQ-PARTICIPANT; PARTSTAT = NEEDS-ACTION:MAILTO:someemail ATTENDEE; ROLE = CHAIR; PARTSTAT = ACCEPTe:MAILTO CLASS:PUBLIC ORGANIZER:MAILTO:someemail SEQUENCE:0 STATUS:TENTATIVE END:VEVENT END:VCALENDAR _ _

そのテキストを削除して、messageBodyパラメーターの内容のみを表示し、メールメッセージにvCalendarファイルを添付したいだけです。 これどうやってするの? これは見通しの問題ですか、コーディングの問題ですか?

編集:Microsoft Outlookでメッセージを表示することにのみ興味があります。 メッセージのソースを調べました(Outlookで右クリック>ソースの表示)、削除するテキストはメッセージの>> htmlタグ内にあります)

1 Answer


1


解決策が見つかりました:

Attachmentのコンストラクターで、「 "text / calendar"」を「MediaTypeNames.Application.Octet」に置き換え、「DispositionType」を「Inline」ではなく「Attachment」に設定します。これはおそらくデフォルト値です。

            Attachment attachment = new Attachment(contentStream, "termenLitigiu.ics", MediaTypeNames.Application.Octet);
            attachment.ContentDisposition.DispositionType = DispositionTypeNames.Attachment;

これにより、メッセージの本文に必要な内容と動作する.ics添付ファイルが含まれた、クリーンなメールメッセージが表示されます。