Howto: Add a body part to a message using CDOSYS.
The sample below shows how to add an additional body part to a message using cdosys. This example demonstrates adding a "text/calendar" (vcalendar) body part, however it should be possible to use this to add "text/plain", "text/html" and other types. In the sample, "this.VCalendarText" holds the text to be written to the body part (in this case its a VCalendar meeting request.
//============================ VCalendar ==============================
if (this.AddVCalendar == true)
{
oMsg.BodyPart.ContentClass = this.ContentClass;
oMsg.BodyPart.ContentMediaType = this.ContentType;
CDO.IBodyPart iBpVCalendar = oMsg.BodyPart.AddBodyPart(-1);
//oMsg.BodyPart.Fields["urn:schemas:mailheader:content-type"].Value = "multipart/alternative";
iBpVCalendar.ContentClass = "urn:content-classes:calendarmessage";
iBpVCalendar.Fields["urn:schemas:mailheader:content-type"].Value = "text/calendar;method=REQUEST;name=\"meeting.ics\"";
iBpVCalendar.Fields["urn:schemas:mailheader:content-transfer-encoding"].Value = "8bit";
iBpVCalendar.Fields.Update();
// ---------- Write VCALENDAR -------------------------
ADODB.Stream stm = null;
stm = iBpVCalendar.GetDecodedContentStream();
//stm.Write(this.VCalendarText);
stm.WriteText(this.VCalendarText, ADODB.StreamWriteEnum.stWriteLine);
stm.Flush();
stm.Close();
oMsg.BodyPart.Fields.Update();
// ---------- Clean-up -------------------------
System.Runtime.InteropServices.Marshal.ReleaseComObject(iBpVCalendar);
System.Runtime.InteropServices.Marshal.ReleaseComObject(stm);
iBpVCalendar = null;
stm = null;
}
Here is an example of what might be written to the body part. Please note that sending meeting requests with a custom created VCALENDAR is not supported, however I'm including this for completeness.
Content-class: urn:content-classes:calendarmessage
Content-Type: text/calendar;
method=REQUEST;
name="meeting.ics"
Content-Transfer-Encoding: 8bit
BEGIN:VCALENDAR
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20080325T202857Z
DTSTART:20080325T200000Z
DTEND:20080325T220000Z
SUMMARY:Test meeting request
UID:040000008200E00074C5B7101A82E00800000000B2BB07349575C80100000000000000001000000019BF8D0149C50643A81325C54140C093
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="Myf":MAIL
TO:myfriend@myserver.mycompany.com
ORGANIZER;CN="Me Myself":MAILTO:memyself@myserver.mycompany.com
LOCATION: Here
DESCRIPTION:Test Request\N
SEQUENCE:0
PRIORITY:5
CLASS:
CREATED:20080321T190958Z
STATUS:CONFIRMED
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR