![](/img/trans.png)
[英]How to pass HTML formatted email body to a javascript function using asp.net c#
[英]Adding ICal on email not supporting HTML body along with it in C# ASP.NET
我在 email 中的 ICAL 存在问题。除了 html 主体外,一切都在工作。 如果我没有 ical 则 html 主体显示在 email 但如果我使用 ICAL 则完整的 html 显示为文本。 谁能告诉我这段代码有什么问题!
public static void SendHTMLEmailWithGoogleInvite(string from, string to, string subj, string body, DateTime date)
{
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();
try { mm.To.Add(to); }
catch (Exception ex)
{
throw new Exception("Invalid receiver email address please update and retry again.", ex);
}
mm.To.Add(to);
from.Split();
mm.From = new System.Net.Mail.MailAddress(from);
mm.Subject = subj;
mm.Body = body;
mm.IsBodyHtml = true;
System.Net.Mail.SmtpClient SMTPServer = new System.Net.Mail.SmtpClient(ConfigurationManager.AppSettings["mailServer"]);
SMTPServer.Port = Convert.ToInt32(ConfigurationManager.AppSettings["Port"]);
SMTPServer.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["SMTPUser"], ConfigurationManager.AppSettings["Pwd"]);
StringBuilder str = new StringBuilder();
str.AppendLine("BEGIN:VCALENDAR");
str.AppendLine("PRODID:-//GeO");
str.AppendLine("VERSION:2.0");
str.AppendLine("METHOD:REQUEST");
str.AppendLine("BEGIN:VEVENT");
str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", date));
str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", date));
str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", date));
str.AppendLine("LOCATION: " + "KOLKATA");
str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
str.AppendLine(string.Format("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:{0}", mm.Body));
str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", mm.Body));
str.AppendLine(string.Format("SUMMARY;ENCODING=QUOTED-PRINTABLE:{0}", mm.Subject));
str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", mm.From.Address));
str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:{1}", mm.From.DisplayName, mm.From.Address));
str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;SCHEDULE-STATUS=1.2:mailto:{1}", mm.To[0].DisplayName, mm.To[0].Address));
str.AppendLine("BEGIN:VALARM");
str.AppendLine("TRIGGER:-PT24H");
str.AppendLine("ACTION:DISPLAY");
str.AppendLine("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Reminder");
str.AppendLine("END:VALARM");
str.AppendLine("END:VEVENT");
str.AppendLine("END:VCALENDAR");
System.Net.Mime.ContentType type = new System.Net.Mime.ContentType("text/calendar");
type.Parameters.Add("method", "REQUEST");
//type.Parameters.Add("method", "PUBLISH");
type.Parameters.Add("name", "ginvite.ics");
mm.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(str.ToString(), type));
SMTPServer.Send(mm);
}
附上 email 的屏幕截图,其中 html 主体显示为带有所有标签的 html 文本。
最后。 我能够让它工作。 我必须添加具有单独视图的 html 内容和 mime 类型 text/html
public static void SendHTMLEmailWithGoogleInvite(string from, string to, string subj, string body, DateTime date)
{
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();
try { mm.To.Add(to); }
catch (Exception ex)
{
throw new Exception("Invalid receiver email address please update and retry again.", ex);
}
mm.To.Add(to);
from.Split();
mm.From = new System.Net.Mail.MailAddress(from);
mm.Subject = subj;
System.Net.Mime.ContentType typeHtml = new System.Net.Mime.ContentType("text/html");
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body, typeHtml);
mm.AlternateViews.Add(htmlView);
System.Net.Mail.SmtpClient SMTPServer = new System.Net.Mail.SmtpClient(ConfigurationManager.AppSettings["mailServer"]);
SMTPServer.Port = Convert.ToInt32(ConfigurationManager.AppSettings["Port"]);
SMTPServer.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["SMTPUser"], ConfigurationManager.AppSettings["Pwd"]);
StringBuilder str = new StringBuilder();
str.AppendLine("BEGIN:VCALENDAR");
str.AppendLine("PRODID:-//GeO");
str.AppendLine("VERSION:2.0");
str.AppendLine("METHOD:REQUEST");
str.AppendLine("BEGIN:VEVENT");
str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", date));
str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", date));
str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", date));
str.AppendLine("LOCATION: " + "KOLKATA");
str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
str.AppendLine(string.Format("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:{0}", body));
str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", body));
str.AppendLine(string.Format("SUMMARY;ENCODING=QUOTED-PRINTABLE:{0}", mm.Subject));
str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", mm.From.Address));
str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:{1}", mm.From.DisplayName, mm.From.Address));
str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;SCHEDULE-STATUS=1.2:mailto:{1}", mm.To[0].DisplayName, mm.To[0].Address));
str.AppendLine("BEGIN:VALARM");
str.AppendLine("TRIGGER:-PT24H");
str.AppendLine("ACTION:DISPLAY");
str.AppendLine("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Reminder");
str.AppendLine("END:VALARM");
str.AppendLine("END:VEVENT");
str.AppendLine("END:VCALENDAR");
System.Net.Mime.ContentType type = new System.Net.Mime.ContentType("text/calendar");
type.Parameters.Add("method", "REQUEST");
type.Parameters.Add("name", "ginvite.ics");
mm.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(str.ToString(), type));
SMTPServer.Send(mm);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.