从.Net c#代码向outlook发送会议请求

时间:2016-10-04 10:19:38

标签: c# outlook

我正在使用Asp.net MVC开发Web应用程序,在我的应用程序的业务层中,我想创建一个函数,将会议请求从c#代码发送到Outlook电子邮件地址日历。

我的意思是我希望c#代码充当发件人,从其电子邮件地址发送会议请求。

是否有针对图书馆或第三方组件的任何建议。或者实现这一目标的最佳方式是什么

我正在使用此代码

 string startTime1 = Convert.ToDateTime(startTime).ToString("yyyyMMddTHHmmssZ");
            string endTime1 = Convert.ToDateTime(endTime).ToString("yyyyMMddTHHmmssZ");
            SmtpClient sc = new SmtpClient("");

            MailMessage msg = new MailMessage();

            msg.From = new MailAddress(mailfrom, "W-LOA Application service");
            msg.To.Add(new MailAddress(emailto));
            msg.Subject = Subject;
            msg.Body = emailbody;

            StringBuilder str = new StringBuilder();
            str.AppendLine("BEGIN:VCALENDAR");

            //PRODID: identifier for the product that created the Calendar object
            str.AppendLine("PRODID:-//Win-LOA //Outlook MIMEDIR//EN");
            str.AppendLine("VERSION:2.0");
            str.AppendLine("METHOD:REQUEST");

            str.AppendLine("BEGIN:VEVENT");

            str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", startTime1));//TimeZoneInfo.ConvertTimeToUtc("BeginTime").ToString("yyyyMMddTHHmmssZ")));
            str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
            str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", endTime1));//TimeZoneInfo.ConvertTimeToUtc("EndTime").ToString("yyyyMMddTHHmmssZ")));
            str.AppendLine(string.Format("LOCATION: {0}", "Location"));

            // UID should be unique.
            str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
            str.AppendLine(string.Format("DESCRIPTION:{0}", msg.Body));
            str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", msg.Body));
            str.AppendLine(string.Format("SUMMARY:{0}", msg.Subject));

            str.AppendLine("STATUS:CONFIRMED");
            str.AppendLine("BEGIN:VALARM");
            str.AppendLine("TRIGGER:-PT15M");
            str.AppendLine("ACTION:Accept");
            str.AppendLine("DESCRIPTION:Reminder");
            str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY");
            str.AppendLine("END:VALARM");
            str.AppendLine("END:VEVENT");

            str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", msg.From.Address));
            str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE:mailto:{1}", msg.To[0].DisplayName, msg.To[0].Address));

            str.AppendLine("END:VCALENDAR");
            System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType("text/calendar");
            ct.Parameters.Add("method", "REQUEST");
            ct.Parameters.Add("name", "meeting.ics");
            AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(), ct);
            msg.AlternateViews.Add(avCal);
            //Response.Write(str);
            // sc.ServicePoint.MaxIdleTime = 2;
            sc.UseDefaultCredentials = false;
            sc.DeliveryMethod = SmtpDeliveryMethod.Network;

            sc.EnableSsl = true;
            sc.Send(msg);

在App.config文件中我正在使用此配置



   <mailSettings>
      <smtp from="lma@MyCompanyDomainname.com" deliveryMethod ="Network">
        <network defaultCredentials="true"   host="smtp.office365.com"  port="25"  />
      </smtp>
    </mailSettings>
&#13;
&#13;
&#13;

但它给了我以下错误

SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应是:5.7.57 SMTP;客户端未通过身份验证,无法在MAIL FROM

期间发送匿名邮件

0 个答案:

没有答案