Sending Outlook meeting requests without Outlook?

前端 未结 5 1829
广开言路
广开言路 2020-11-28 02:32

I just wonder if it is possible to send Meeting Requests to people without having Outlook installed on the Server and using COM Interop (which I want to avoid on a server at

5条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-28 02:56

    The code below will send a meeting request in such a way that Outlook will render Accept/Decline buttons.

    Note that UID must be unique per meeting, I've used a GUID.

    Also note you need to replace CREATED, DTSTART, DTEND, DTSTAMP, LAST-MODIFIED. These are UTC date/times.

        var m = new MailMessage();
    
        m.Subject = "Meeting";
    
        m.Body = "";
    
        string iCal = 
    @"BEGIN:VCALENDAR
    PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN
    VERSION:2.0
    METHOD:PUBLISH
    X-MS-OLK-FORCEINSPECTOROPEN:TRUE
    BEGIN:VEVENT
    CLASS:PUBLIC
    CREATED:20140423T045933Z
    DESCRIPTION:desc
    DTEND:20140430T080000Z
    DTSTAMP:20140423T045933Z
    DTSTART:20140430T060000Z
    LAST-MODIFIED:20140423T045933Z
    LOCATION:location...
    PRIORITY:5
    SEQUENCE:0
    SUMMARY;LANGUAGE=en-us:Summary...
    TRANSP:OPAQUE
    UID:D8BFD357-88A7-455C-86BC-C2CECA9AC5C6
    X-MICROSOFT-CDO-BUSYSTATUS:BUSY
    X-MICROSOFT-CDO-IMPORTANCE:1
    X-MICROSOFT-DISALLOW-COUNTER:FALSE
    X-MS-OLK-AUTOFILLLOCATION:FALSE
    X-MS-OLK-CONFTYPE:0
    BEGIN:VALARM
    TRIGGER:-PT60M
    ACTION:DISPLAY
    DESCRIPTION:Reminder
    END:VALARM
    END:VEVENT
    END:VCALENDAR";
    
        using (var iCalView = AlternateView.CreateAlternateViewFromString(iCal, new System.Net.Mime.ContentType("text/calendar")))
        {
            m.AlternateViews.Add(iCalView);
    
            var c = new SmtpClient();
    
            // Send message
            c.Send(m);
        }
    

    This assumes you have a local SMTP server configured in your config file:

      
        
          
            
          
        
      
    

提交回复
热议问题