System.Net.Mail用空格替换AlternateView内容中的换行符

时间:2011-01-31 16:35:45

标签: c# .net email encoding icalendar

我正在使用System.Net.Mail发送ics会议/日历邀请。 ics中的行终止符(0D 0A)正在被接收的电子邮件中的空格(20 20)替换。我用google搜索解决方案,并尝试了下面的代码的一些变体,但似乎没有一个解决这个问题。有什么想法吗?

System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage();
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("<<data>>",ct);
avCal.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
m.AlternateViews.Add(avCal);

3 个答案:

答案 0 :(得分:2)

使用

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body, System.Text.Encoding.UTF8, MediaTypeNames.Text.Html);  

答案 1 :(得分:1)

没关系。我的不好......进一步的调试显示问题与编码或邮件部分无关。实际上看起来像是在SQL数据库和应用程序之间的某处乱码。感谢所有发布建议的人!

答案 2 :(得分:0)

您是否尝试使用接受Encoding和MediaType的AlternateView.CreateAlternateViewFromString重载?我用:

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(
            htmlBody, Encoding.UTF8, MediaTypeNames.Text.Html);

它似乎对我有用。