我已经使用SMTP实现了一个自动电子邮件发送到用户Outlook收件箱。使用备用视图同时发送日历约会。还有一个html图标,可以双击打开浏览器中的html文件。我现在使用相同的代码,但使用交换服务器,并有不同的结果。仍然使用相同的代码时行为是不同的!是否有一些功能在使用交换时被阻止?如何解决这个问题并获得相同的结果?
仅使用SMTP的屏幕截图:
仅使用SMTP的代码:
//Message
MailMessage msg = new MailMessage();
mailMessage.From = new MailAddress("from@test.com");
mailMessage.To.Add(new MailAddress("to@test.com"));
mailMessage.Subject = "Subject";
//Calendar
System.Net.Mime.ContentType ctCal = new System.Net.Mime.ContentType("text/calendar");
ctCal.Parameters.Add("method", "REQUEST");
AlternateView calendarView =
AlternateView.CreateAlternateViewFromString(GetCalendarEvent(mailMessage, "Test",
"REQUEST", strReviewByDate, strReviewByDate, "").ToString(), ctCal);
mailMessage.AlternateViews.Add(calendarView);
//Read Html file.
String filePath = "C:\\Path\\To\\File.html";
StreamReader sr = File.OpenText(strFilePath);
String body = sr.ReadToEnd();
sr.Close();
//I make other changes to the html file here//
//Save Html file
FileStream fs = File.OpenWrite("C:\\Path\\To\\EditedFile.html");
StreamWriter writer = new StreamWriter(fs, Encoding.UTF8);
writer.Write(strBody);
writer.Close();
//Add Attachment to message
mailMessage.Attachments.Add(new Attachment("C:\\Path\\To\\EditedFile.html"));
//Send the email
SmtpClient smtpClient = new SmtpClient("127.0.0.1", 25);
smtpClient.Send(mailMessage);
更改为使用Exchange后的屏幕截图:
用于Exchange的代码更改:
从上面代码更改为与交换一起使用的唯一代码位于以下行:
SmtpClient smtpClient = new SmtpClient("exchange.test.example.com", 25);
答案 0 :(得分:0)
iCal必须是邮件中唯一的MIME部分。 如果需要附件,则必须将其添加到iCal MIME部分(ATTACH标头)。