本文介绍了正确的语法使用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电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 22:08