本文介绍了正确的语法使用AlternateView生成HTML电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图使用 AlternateView
来迎合HTML和文本的客户。我想preFER使用HTML并在必要时只能退回到文本。我开始重新编码的老控制台应用程序要做到这一点,但我仍然有回车换行,并在我的code/ R / N,我的问题是试图找出如何以及在何处使用Environment.Newline代替这些?
现在,控制台应用程序正在从Web窗体调用。我遇到一些困难的调试和最终的计划是为这个创造一个WCF服务。
我觉得我有难的是确定哪些AlternateView我实际上做,而不是多少电子邮件正文中我必须明确地code分开,文本和HTML版本。具体而言,我仍然有以下code的最终else块旧回车和换行,我试图找出这样做的更优雅的方式。
// ARGS [0] - 主题
// ARGS [1] - 消息(使用所有Environment.Newlines)
// ARGS [2] - RfpID 静态无效的主要(字串[] args)
{
串受试者= ARGS [0];
字符串消息= ARGS [1]; //获取存储在web.config文件的电子邮件信息编程方式访问
字符串emailHost = WebConfigurationManager.AppSettings [EmailHost];
字符串FROMADDRESS = WebConfigurationManager.AppSettings [FromEmailAddress]; SmtpClient客户端=新SmtpClient(emailHost); 诠释计数= 0;
使用(SqlDataReader的博士= MailerDALC.GetAddressesByRFP(Convert.ToInt32(参数[2])))
{
字符串的哈希;
而(dr.Read())
{
MAILMESSAGE MAILMESSAGE新= MAILMESSAGE(); mailMessage.IsBodyHtml = TRUE;
mailMessage.SubjectEncoding = System.Text.Encoding.UTF8;
mailMessage.BodyEncoding = System.Text.Encoding.UTF8; 使用(AlternateView textPart =
AlternateView.CreateAlternateViewFromString(mailMessage.Body,
System.Text.Encoding.UTF8,text / plain的))
{
textPart.TransferEncoding =
System.Net.Mime.TransferEncoding.QuotedPrintable;
mailMessage.AlternateViews.Add(textPart);
} 使用(AlternateView htmlPart =
AlternateView.CreateAlternateViewFromString(mailMessage.Body,
System.Text.Encoding.UTF8,text / html的))
{
htmlPart.TransferEncoding =
System.Net.Mime.TransferEncoding.QuotedPrintable;
mailMessage.AlternateViews.Add(htmlPart);
} mailMessage.Priority = MailPriority.High; mailMessage.From =新的MailAddress(FROMADDRESS);
mailMessage.Subject =主体; mailMessage.To.Add(新MailAddress(DR [EmailAddress的]的ToString())); 如果((布尔)博士[SecondaryNotify])
mailMessage.Bcc.Add(新MailAddress(DR [SecondaryEmail]的ToString())); //发送电子邮件在100批次,每批之间有30秒的停顿
如果((计数> = 100)及及(计100%== 0))
Thread.sleep代码(30000); //检查每封电子邮件的地址经过精心构性
如果(!IsWellformedEmailAddr(mailMessage.To.ToString()))
{
LOGERROR(DR [1]的ToString()
+是一个畸形的电子邮件地址。
邮件没有发送到该预订
+ DR [1]的ToString()+,。);
继续;
}
其他
{
mailMessage.Body =消息; 哈希=博士[哈希]的ToString()。
mailMessage.Body + =
\\ n \\ n如果您不希望再收到通知,可以
+退订和您的详细信息将会从系统中删除:\\ n
+http://example.com/apps/vendorreg/unsubscribe.aspx?unsub=
+散+\\ n \\ n; mailMessage.Body + =我的网站政策:\\ n
+http://example.com/doc/help/policies/help_website_policies client.Send(mailMessage.From.Address,mailMessage.To [0]的ToString(),
mailMessage.Subject,mailMessage.Body); 算上++;
}
散列=;
}
}
}
解决方案
正如我猜,我必须明确提供邮件正文的纯文本和HTML版本。 MSDN文档是不是非常有帮助。下面是我创建得到这个工作的code的一个片段:
// ARGS [0] - 主题
// ARGS [1] - 纯文本正文内容
// ARGS [2] - HTML正文内容
// ARGS [3] - RfpID
这篇关于正确的语法使用AlternateView生成HTML电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!