在纯文本中读取文本文件和电子邮件,而不影响原始文本

时间:2012-02-03 14:50:50

标签: c#

我有一个纯文本文件,我需要使用C#读取,稍微操作一下然后我需要通过电子邮件发送它。这很容易,但它也必须保持与原始状态相同的格式:

这是示例文件“mySample.txt”的摘录:

   *****************************NB!!!!**********************************
   *Please view http://www.sdfsdf.comsdfsdfsdf  .                      *
   *********************************************************************


        *** DO NOT DELETE or ALTER ANY OF THE FOLLOWING TEXT ***

                          Company X PTY.
                    Lorem Ipsum Office
                  Last Change - 01 February 2008

           APPLICATION TO ESTABLISH A COMMUNITY WITHIN
                THE RESTIN DISTRICT OF THE IPSUM.

    ===================================================================

    1. COMMUNITY and ACTION

    Give the name of the community.  This is the name that will be
    used in tables and lists associating the community with the name
    district and community forum.  The community names that are
    delegated by Lorem are at the district level
    The Action field specifies whether this is a 'N'ew application, an
    'U'pdate or a 'R' removal.

    1a. Complete community name:**{0}**
    1b. Action - [N]ew, [U]pdate, or [R]emoval :**{1}**

正如您所看到的,文件中的占位符{0}和{1}将被自动化过程替换。

在我的C#中,我使用流阅读器将整个文件读入StringBuilder对象,然后使用StringBuilder.AppendFormat方法替换占位符。

问题是当我将文本添加到电子邮件正文并发送它时,格式最终看起来不同。看起来在这个过程中会删除一堆空格或制表符。

private void Submit_Click(object sender, EventArgs e)
    {
        //create mail client
        System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
        System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
        message.To.Add(ConfigurationManager.AppSettings["SubmitToEmail"]);
        message.Bcc.Add("xyz@test.com");
        message.Subject = "Test Subject";

        message.BodyEncoding = Encoding.ASCII;
        message.IsBodyHtml = false;
        message.Body = _PopulateForm(_GatherInput());//calls method to read the file and replace values
        client.Send(message);

        //cleanup
        client = null;
        message.Dispose();
        message = null;

    }

任何人对如何保持格式都有任何想法?

谢谢, 雅克

2 个答案:

答案 0 :(得分:0)

您遇到的问题是您将纯文本作为HTML发送。布局变得很自然,因为HTML的显示方式与文本不同。纯文本有新行(\n),制表符(\t)等,而HTML有换行符(<BR>)和不同的布局方法。

如果我是你,我会首先用<BR>替换新行(应该有替换函数x.Replace("\n", "<BR>");

对于居中的文字项目,请将其打包在<p style="text-align:center" }></p>中。

答案 1 :(得分:0)

答案似乎是.net和Mail邮件对象。您必须创建一个alternateView对象并将其添加到该对象,而不是将内容添加到Body属性。这解决了我的问题。

此致 雅克